2014-01-22 19 views
13

enthalten habe Ich versuche, das einfache Programm unten zu kompilieren. Aber es ist nicht & Kompilieren gibt Fehler:Fehler: 'cout': nicht deklarierter Bezeichner; obwohl ich Iostream-Header-Datei in Programm

error C2065: 'cout' : undeclared identifier 

Ich möchte Sie fragen, warum dieses Programm nicht funktioniert, obwohl ich iostream Header-Datei darin enthalten sind?

#include <iostream> 

void function(int) { cout << “function(int) called” << endl; } 
void function(unsigned int) { cout << “function(unsigned int) called” << endl; } 
    int main() 
    { 
     function(-2); 
     function(4); 
     return 0; 
    } 

Vielen Dank im Voraus.

+8

Verwenden Sie nur 'std :: cout' statt' cout'. Füge 'std ::' vor allem, was du verwendest, aus 'namespace std'. – sgarizvi

+0

Oder in einem Fall wie diesem - wenn Sie ein sehr einfaches Programm schreiben, können Sie immer schreiben 'using namespace std;' irgendwo unter Ihrem '#include '. Es wird den Compiler informieren, nach "cout" im std-Namespace zu suchen, damit Ihr "cout" funktioniert. Obwohl dies als eine schlechte Praxis überhaupt gilt. –

+0

Vermeiden Sie 'using namespace std;'. Das wird dich garantiert eines Tages beißen. Wenn Sie nicht "std :: cout" eingeben möchten, verwenden Sie "using std :: cout", aber beschränken Sie es auf einen kleinen Bereich, und verwenden Sie es nicht in Headern. – juanchopanza

Antwort

18

Der Stream Cout hinzufügen im std-Namensraum definiert ist. So ist es zu nennen Sie schreiben:

std::cout 

Wenn Sie dies cout verkürzen wollen, dann können Sie

using namespace std; 

oder

using std::cout; 

vor dem Schreiben cout schreiben.

Jede gute Dokumentationsquelle wird Ihnen sagen, welcher Namespace ein Objekt enthält. Zum Beispiel: http://en.cppreference.com/w/cpp/io/cout

+0

Side Kommentar: Verwenden Sie nicht' Namespace std' verwenden. Wenn Sie diese Grausamkeit in einer Kopfzeile verwenden, kommen Benutzer dieser Kopfzeile für Ihren Kopf. Die Folgen sind weniger gravierend, wenn Sie dies in einer Quelldatei verwenden. Rezensenten dieser Datei werden den Autor als hoffnungslosen Neuling betrachten. Sogar 'using std :: cout' ist zweifelhaft. Ich, zum einen, mag das 'std :: '. Es sagt mir, dass '' aus der Standardbibliothek stammt. –

+0

Wie soll ich diesen Fehler in einem C-Code beheben? –

+0

@Mona Std :: Cout ist Teil der C++ - Standardbibliothek und daher nicht in C-Code verfügbar –

2

Sie haben std::cout zu schreiben oder using std;