Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido)Duvida de iniciante


malokas

Pergunta

E ai galera beleza? Comecei a ver C++ hoje na faculdade. Meu professor fez aquele programa bem conhecido "Hello World". Minha duvida é o seguinte. Lá na faculdade o professor usa o Dev-C++ no windows. Eu copiei o codigo e testei no linux(ubuntu) e não deu certo(o codigo é o mesmo visto em sala). Testei alguns outros programas e deu certo. Porem o que vi em sala não.

O codigo do programa é esse:

#include <iostream>

int main()

{

std::cout << "Ola mundo!\n";

system("pause");

return 0;

}

E o erro que da ao tentar compilar é esse.

teste.cpp: In function ‘int main()’:

teste.cpp:10: error: ‘system’ was not declared in this scope

Esse programa que é bem parecido funciona

#include <iostream>

using namespace std;

int main()

{

cout << "Isso é um teste" << endl;

return 0;

}

Só queria entender porque o mesmo codigo funciou em um SO(WinXP) e em outro não(Ubuntu).

Me desculpem se falei muitas besteiras ai, mas peguem leve q é meu primeiro post hehehe.

Editado por malokas
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

No linux ele não achou a função system.

iostream não define system, pelo menos foi o que vi:

http://www.cplusplus.com/reference/iostream/iostream/

Mesmo se funcionasse no Linux não existe o comando "pause" e ele serve apenas para que voce consiga vizualizar o conteúdo impresso no terminal windows antes que ele se feche.

Com o linux voce não tem esse problema porque roda em um terminal, correto?

Abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

Códigos realmente mudam de um SO para outro. por isso que existe, por exemplo, o C ANSI, que é o padrão suportado por todos os compiladores. Assim, se o seu código for feito seguindo o padrão ANSI irá compilar em qualquer SO porém podem ocorrer diferenças de funcionamento.

Um dos motivos é no código que foi apresentado: a função system serve para executar um comando da mesma forma que você faria no console do sistema.

No seu caso ele chama o programa pause, que irá aguardar o usuário pressionar uma tecla para continuar. Porém o linux não possui o programa pause e portanto não vai funcionar esta chamada.

Porém o problema de compilação já tem outro motivo. O que acontece é que não foi incluído o header que define a função system, no caso o cstdlib.

#include <cstdlib>

E veja o link abaixo sobre este tipo de "vício":

http://www.gidnetwork.com/b-61.html

Link para o comentário
Compartilhar em outros sites

  • 0
No linux ele não achou a função system.

iostream não define system, pelo menos foi o que vi:

http://www.cplusplus.com/reference/iostream/iostream/

Mesmo se funcionasse no Linux não existe o comando "pause" e ele serve apenas para que voce consiga vizualizar o conteúdo impresso no terminal windows antes que ele se feche.

Com o linux voce não tem esse problema porque roda em um terminal, correto?

Abraço!

Valeu, só fiz apagar o system do codigo e funcionou beleza.

Valeu ai pela ajuda galera. :D

Link para o comentário
Compartilhar em outros sites

  • 0
Em 12/08/2009 at 10:10, Marcelo Utikawa da Fonseca disse:

Códigos realmente mudam de um SO para outro. por isso que existe, por exemplo, o C ANSI, que é o padrão suportado por todos os compiladores. Assim, se o seu código for feito seguindo o padrão ANSI irá compilar em qualquer SO porém podem ocorrer diferenças de funcionamento.

Um dos motivos é no código que foi apresentado: a função system serve para executar um comando da mesma forma que você faria no console do sistema.

No seu caso ele chama o programa pause, que irá aguardar o usuário pressionar uma tecla para continuar. Porém o linux não possui o programa pause e portanto não vai funcionar esta chamada.

Porém o problema de compilação já tem outro motivo. O que acontece é que não foi incluído o header que define a função system, no caso o cstdlib.

 

 

 

#include <cstdlib>

 

 

E veja o link abaixo sobre este tipo de "vício":

 

http://www.gidnetwork.com/b-61.html

Adicionei o cabeçalho que você citou e deu certo, valeu mesmo!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...