1

C++のプリプロセッサと名前空間を理解するのに問題があります。たとえば、次のプログラムについて考えてみます。

#include <iostream> 

int main() 
{
    using namespace std;

    cout << "Hello World!" << endl;

    return 0; 
}

したがって、このプログラムをコンパイルする準備ができると、プリプロセッサは#includeディレクティブを認識し、iostreamファイルをプログラムに追加して、プログラムがI / O機能(つまり、「cout」および「endl」)を持つようにします。私の教科書によると、C ++コンパイラの標準コンポーネントであるクラス、関数、および変数は、名前空間stdに配置されています。

標準関数(「cout」と「endl」)がこの名前空間に配置されている場合、iostreamの目的は何ですか?私は基本的に、iostreamと使用中の名前空間に関する情報の両方が必要な理由を理解しようとしています。

4

2 に答える 2

3

厳密に言えば、あなたは必要ありませんusing namespace std;それがするのはあなたに書かせることだけです

cout << "Hello World!" << endl;

それ以外の

std::cout << "Hello World!" << std::endl;

std::名前空間には、すべての名前に暗黙的に「プレフィックス」が付けられているという意味でのみ、(標準C ++ライブラリによって提供される他の定義の中で)iostream定義が「含まれています」 。この「含む」は、「iostreamファイルに入出力関数の定義が含まれる」の「含む」とは異なります。ファイルには文字通り定義が含まれます。名前空間名は、std::名前の衝突を回避するためのプレフィックスにすぎません。

于 2013-02-10T00:17:43.177 に答える
1

ヘッダーファイルには、変数や。<iostream>など、いくつかの便利なものの宣言が含まれています。std::coutstd::endl

これらの宣言がないと、コンパイラは、を記述したときに何を参照しているかを認識できませんcout << ...

于 2013-02-10T00:17:00.937 に答える