Ir ao conteúdo
  • Cadastre-se

Um erro em C++ que não entendo.


Ir à solução Resolvido por dudaskank,

Posts recomendados

Boa tarde pessoal!

 

Estou com um código simples que está gerando um erro que não estou conseguindo compreender. 

Estou usando o Virtual Studio 2015 na linguagem C++.

 

Segue abaixo o código e em seguida os erros:

 

1   // ConsoleApplication1.cpp : Defines the entry point for the console application.
2   //
3  
4   #include <iostream>
5   #include "stdafx.h"
6
7   using namespace std;
8   int main()
9   {
10   cout << "Boa tarde!";
11 
12   return 0;
13   }

 

 

Severity Code   Description                  Project        File Line
Warning C4627 '#include <iostream>': skipped when looking for precompiled header use ConsoleApplication1 c:\Users\mcalixto\documents\visual studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.cpp 4

 

Severity Code Description                Project           File Line
Error C2065 'cout': undeclared identifier ConsoleApplication1 c:\Users\mcalixto\documents\visual studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.cpp 10
 
Não sei o que significa: "stdafx.h"
Se eu não por #include "stdafx.h" aparecer o erro abaixo:
 
Error C1010 - unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
 
Grato.
 
Atte.
 

 

Link para o comentário
Compartilhar em outros sites

O stdafx já pode conter o include iostream, si clicar nele você pode ver o que contem. Si tiver o iostream no stdafx não faça outro include, simplesmente faça o using namespace antes do main.

 

Primeiro que Warning não são erros, o que te esta dizendo o primeiro warning(C4627) é que o seu include foi ignorado por que já existia um criado anteriormente(dentro do stdafx), então o programa te esta avisando essa "repetição". Confira dentro do stdafx para corroborar.

Deixe sempre o stdafx antes de todos os demais includes, e ponha dentro dele, os includes que mais se repitam em todos os arquivos. Esse arquivo facilita ao ter muitos includes, para que você não tenha que estar pondo uma montão de includes separados que pode chegar a ser bem irritante, você só incluí o stdafx e pronto. porém o using namespace std você vai ter que por sim o sim em cada arquivo, si nao vai ter que por o espaço de nome std:: adiante de cout. Nao serve por o name space dentro do stdafx.

 

Error C2065 disse que o cout não foi declarado, provavelmente por que seu programa nao detectou o iostream, faça o anterior ou elimine esse stdafx. você não é obrigado a usá-lo.

 

prove isso:

#include <iostream>using namespace std;int main (){    cout << "Hola" << endl;        cin.ignore();    return 0;}

Si nao prove isso:

#include "stdafx.h"  //<- iostream pode estar aqui dentrousing namespace std;int main (){    cout << "Hola" << endl;        cin.ignore();    return 0;}

E si não funcionar nenhuma das duas formas prove isso:

#include "stdafx.h"#include <iostream>using namespace std;int main (){    cout << "Hola" << endl;        cin.ignore();    return 0;}

porém essa ultima quase estou seguro que não vai funcionar XD.
 Logo você nos conta como foi.

Link para o comentário
Compartilhar em outros sites

  • Solução

Não entendo de pre compilled header, mas pelo que li esse 3º do @vangodp é o que vai funcionar. Tudo que vem "include" antes dele é ignorado, o que diz na mensagem de warning aliás. Assim, o iostream não é incluído no seu programa.

 

Você pode marcar o "Dont use precompiled headers option" na hora de criar o projeto.

 

fontes

https://www.allegro.cc/forums/thread/606413

http://stackoverflow.com/questions/8483472/include-skipped-when-looking-for-precompiled-header-use-unexpected-end-of-fi

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

O stdafx já pode conter o include iostream, si clicar nele você pode ver o que contem. Si tiver o iostream no stdafx não faça outro include, simplesmente faça o using namespace antes do main.

 

Primeiro que Warning não são erros, o que te esta dizendo o primeiro warning(C4627) é que o seu include foi ignorado por que já existia um criado anteriormente(dentro do stdafx), então o programa te esta avisando essa "repetição". Confira dentro do stdafx para corroborar.

Deixe sempre o stdafx antes de todos os demais includes, e ponha dentro dele, os includes que mais se repitam em todos os arquivos. Esse arquivo facilita ao ter muitos includes, para que você não tenha que estar pondo uma montão de includes separados que pode chegar a ser bem irritante, você só incluí o stdafx e pronto. porém o using namespace std você vai ter que por sim o sim em cada arquivo, si nao vai ter que por o espaço de nome std:: adiante de cout. Nao serve por o name space dentro do stdafx.

 

Error C2065 disse que o cout não foi declarado, provavelmente por que seu programa nao detectou o iostream, faça o anterior ou elimine esse stdafx. você não é obrigado a usá-lo.

 

prove isso:

#include <iostream>using namespace std;int main (){    cout << "Hola" << endl;        cin.ignore();    return 0;}

Si nao prove isso:

#include "stdafx.h"  //<- iostream pode estar aqui dentrousing namespace std;int main (){    cout << "Hola" << endl;        cin.ignore();    return 0;}

E si não funcionar nenhuma das duas formas prove isso:

#include "stdafx.h"#include <iostream>using namespace std;int main (){    cout << "Hola" << endl;        cin.ignore();    return 0;}

porém essa ultima quase estou seguro que não vai funcionar XD.

 Logo você nos conta como foi.

 

 

Tirei apenas o "#include <iostream>" e o código funcionou corretamente.

 

Não consegui ver a mensagem escrita em "cout", então, descobri que deveria usar "system("pause");" ao invés de "return 0;".

 

Muito obrigado.

 

Graça e paz estejam com vocês. 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...