私は本を通してC++とCOMを学びます。 IDE MS Visual Studio 2012では、新しい空のC++プロジェクトを作成し、既存のファイルをいくつか追加しました。CPPファイルには#include<iostream>
行、しかしエディターで私はそのようなメッセージを得た:
エラー:識別子「cout」は未定義です
終わり
エラー:識別子「endl」は未定義です
画面:
なぜ起こるのですか?
_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()
のスコープにのみ適用されます。
これは#include <iostream>
の後に最初に追加できます:
using namespace std;
cout
はstd名前空間にあります。コードではstd::cout
を使用します。また、ヘッダーファイルにusing namespace std;
を追加しないでください。コードをstd名前空間と混在させるのは悪いことです。特にヘッダーファイルに追加しないでください。