web-dev-qa-db-ja.com

#include <iostream>は存在しますが、エラーが発生します。識別子「cout」は未定義です。どうして?

私は本を​​通してC++とCOMを学びます。 IDE MS Visual Studio 2012では、新しい空のC++プロジェクトを作成し、既存のファイルをいくつか追加しました。CPPファイルには#include<iostream>行、しかしエディターで私はそのようなメッセージを得た:

エラー:識別子「cout」は未定義です

終わり

エラー:識別子「endl」は未定義です

画面:

enter image description here

なぜ起こるのですか?

31
Andrey Bushman

_std::_名前空間を指定する必要があります。

_std::cout << .... << std::endl;;
_

または、usingディレクティブを使用できます。

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

cout << .... << endl;
_

これらを含むコードはまた、シンボルをグローバル名前空間に持ってくるので、ヘッダーのこれらのusingディレクティブを避けるべきであると付け加えるべきです。ディレクティブの使用を小さなスコープに制限する、たとえば

_#include <iostream>

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

ここでは、usingディレクティブはfoo()のスコープにのみ適用されます。

40
juanchopanza

これは#include <iostream>の後に最初に追加できます:

using namespace std;
6
arash

coutはstd名前空間にあります。コードではstd::coutを使用します。また、ヘッダーファイルにusing namespace std;を追加しないでください。コードをstd名前空間と混在させるのは悪いことです。特にヘッダーファイルに追加しないでください。

6
billz