Eu não quero discutir sobre C ++ ou qualquer linguagem de programação! Eu só quero saber o que estou fazendo de errado com o linux ubuntu sobre a compilação do helloworld.cpp!
Estou aprendendo C ++, então minhas etapas são:
abra o hello.cpp no vim e escreva isto
#include <iostream.h>
int main()
{
cout << "Hello World!\n";`
return 0;
}
Então, depois que eu tentei no terminal isso
g++ hello.cpp
E a saída é
hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.
O que você sugere? Qualquer guia passo a passo útil para mim? Obrigado!
g++
Ubuntu) não aceite.Respostas:
Você deve usar
#include <iostream>
, nãoiostream.h
; o formulário .h é muito antigo e está obsoleto desde anos.Você pode ler mais do que você provavelmente vai querer saber sobre o .h vs não .h formas aqui: http://members.gamedev.net/sicrane/articles/iostream.html
(Além disso, você deve escrever
std::cout
ou ter uma linha,using namespace std;
caso contrário, seu próximo erro será sobre o compilador não encontrar uma definição paracout
.)fonte
iostream.h
no meu sistema. Na verdade, os arquivos de cabeçalho C ++ são instalados pelo libstdc ++ - dev , que é requerido pelo pacote do compilador C ++ g ++ , que por sua vez é requerido pelo essencial da construção . Portanto, não, você não precisa do build-essential para compilar programas C ++ simples; instalar og++
pacote é suficiente.cout
a trabalhar sem ostd::
prefixo,using std::cout;
é preferívelusing namespace std;
. Mesmo váriasusing
instruções (semnamespace
) geralmente são melhores, pois você não traz identificadores dostd
espaço para nome que você não deseja e pode entrar em conflito com os nomes em seu próprio programa.Você deve mudar
iostream.h
paraiostream
. Eu também estava recebendo o mesmo erro que você, mas quando mudeiiostream.h
para apenasiostream
, funcionou corretamente. Talvez isso funcione para você também.Em outras palavras, altere a linha que diz:
Em vez disso, faça isso:
Os arquivos de cabeçalho da biblioteca padrão C ++, conforme definido no padrão, não possuem
.h
extensões.Como mencionado na resposta de Riccardo Murri , você também precisará chamar
cout
pelo nome totalmente qualificadostd::cout
ou ter uma dessas duas linhas (de preferência abaixo das#include
diretivas, mas acima do outro código):A segunda maneira é considerada preferível, especialmente para projetos de programação sérios, pois afeta apenas
std::cout
, em vez de trazer todos os nomes nostd
espaço para nome (alguns dos quais podem potencialmente interferir nos nomes usados no seu programa).fonte