2012-11-03 6 views
18

Uczę się C++ i COM przez książki. W środowisku IDE MS Visual Studio 2012 utworzyłem nowy pusty projekt C++ i dodałem do niego kilka istniejących plików. Mój plik CPP zawiera #include<iostream> wiersz, ale w edytorze mam takie komunikaty:Istnieje #include <iostream>, ale pojawia się błąd: identyfikator "cout" jest niezdefiniowany. Czemu?

Error: identifier "cout" is undefined

końcowy

Error: identifier "endl" is undefined

ekran:

enter image description here

dlaczego tak się dzieje?

+1

try std :: cout i std :: endl – srbhkmr

+1

try Kopiuj Wklej kod do – sehe

+2

Świeże i nieuszkodzonym pamiętać, że nie wie o „używając nazw std; '. Słodki :) – jrok

Odpowiedz

26

Musisz określić std:: nazw:

std::cout << .... << std::endl;; 

Alternatywnie, można użyć dyrektywy using:

using std::cout; 
using std::endl; 

cout << .... << endl; 

Dodam, że należy unikać tych using dyrektyw w nagłówkach, ponieważ kod w tym również będą miały symbole wprowadzone do globalnej przestrzeni nazw. Ograniczyć za pomocą dyrektyw do małych zakresów, na przykład

#include <iostream> 

inline void foo() 
{ 
    using std::cout; 
    using std::endl; 
    cout << "Hello world" << endl; 
} 

Tutaj dyrektywa using odnosi się tylko do zakresu foo().

+0

Dziękujemy! Zapomniałem o tym. :) Teraz wszystko jest OK. –

4

cout jest w std namespace, należy użyć std::cout w kodzie. I nie powinieneś dodawać using namespace std; w pliku nagłówkowym, źle jest mieszać kod z stdem przestrzeni nazw, szczególnie nie dodawaj go do pliku nagłówkowego.

+1

http://en.wikipedia.org/wiki/Thou_Shalt_Not –

3

Możesz dodać to na początku po #include <iostream>:

using namespace std; 
Powiązane problemy