Ik leer C++ en COM via de boeken.
In de IDE MS Visual Studio 2012 heb ik een nieuw leeg C++-project gemaakt en er enkele bestaande bestanden aan toegevoegd. Mijn CPP-bestand bevat de rij #include<iostream>
, maar in de editor kreeg ik dergelijke berichten:
Fout: identifier “cout” is niet gedefinieerd
einde
Fout: identifier “endl” is niet gedefinieerd
Scherm:
Waarom gebeurt het?
Antwoord 1, autoriteit 100%
U moet de std::
naamruimte specificeren:
std::cout << .... << std::endl;;
U kunt ook een using
-instructie gebruiken:
using std::cout;
using std::endl;
cout << .... << endl;
Ik moet hieraan toevoegen dat u deze using
-richtlijnen in headers moet vermijden, aangezien code die deze bevat, ook de symbolen in de globale naamruimte zal brengen. Beperk het gebruik van richtlijnen tot kleine bereiken, bijvoorbeeld
#include <iostream>
inline void foo()
{
using std::cout;
using std::endl;
cout << "Hello world" << endl;
}
Hier is de using
-richtlijn alleen van toepassing op het bereik van foo()
.
Antwoord 2, autoriteit 24%
Je kunt dit aan het begin toevoegen na #include <iostream>
:
using namespace std;
Antwoord 3, autoriteit 15%
cout
in std namespace staat, moet je std::cout
in je code gebruiken.
En je mag using namespace std;
niet toevoegen aan je header-bestand, het is slecht om je code te mixen met std namespace, vooral niet toevoegen in header-bestand.
Antwoord 4, autoriteit 4%
Het probleem is de std namespace die je mist. cout
staat in de std namespace.
Voeg using namespace std;
na de #include