2011-01-21 12 views
4

#include <iostream>と表示されているときは、プリプロセッサディレクティブと言われています。プリプロセッサディレクティブ

#include --->ディレクティブ

そして、私は思う:

<iostream> --->プリプロセッサ "プリプロセッサ" と "指示" が何を意味するのか

しかし、?

答えて

5

なお、 "指令" および "所定の方向"(すなわち、次数)であるとの関係を考えるのに役立つことができます。 "プリプロセッサディレクティブ"は、プリプロセッサへの指示で、コンパイルの後半に入る前にコードに加えるべき変更について説明しています。しかし、プリプロセッサは何ですか?さて、名前はちょっと再帰的です。テキストソースコードを処理して、さまざまな方法で変更するだけです。この余分なプロセスは、プログラムの選択、結合、さらには部分生成の柔軟性を提供します。

EDITアドレッシング@ SWEngineerのコメント:プリプロセッサは、C++プログラムを変更し、 "実際の" C++コンパイラ(これは以前のような使い方です)に出力します。プリプロセッサが "#include"を見ると、 "ああ、これは私が理解できることだと思います。私はこれを世話して、C++コンパイラに無意識に渡すだけではありません"と考えています。そこで、いくつかのディレクトリ(/ usr/includeのようないくつかの標準的なもの、コンパイラが独自のヘッダーをインストールした場所、コマンドラインで-Iを使って指定したもの)を検索し、 "iostream"というファイルを探します。それが見つかると、入力プログラム内の "#include"という行を "iostream"というファイルの完全な内容に置き換え、その結果を出力に追加します。しかし、次に、 "iostream"ファイルから読み込んだ最初の行に移動し、理解できるより多くの指示を探します。

したがって、プリプロセッサは非常に簡単です。 #include、#define、#if /#elif /#endif、#warningは理解できますが、あまり多くはありません。これは、 "int"が何であるか、テンプレート、クラス、またはそのような "本当の" C++のものの手がかりを持っていません。これは、ファイルやコードの一部をカットアンドペーストして、C++コンパイラが最終的に参照して処理するプログラムを準備している自動エディタのようなものです。プリプロセッサは、すべての異なるディレクトリ(コンパイルの次の段階はそれについて何も知る必要はありません)でプログラムの部分を見つける方法を知っており、他のディレクトリで動作する可能性のあるコードを削除することができるため、使用中のコンピュータシステムでは有効ではありません。また、プログラムがより多くの実際のC++コードを生成する簡潔で簡潔なマクロ文を使用できるようにし、プログラムをより管理しやすくします。

+0

@トニー。たとえば、「#include 」という例で説明することはできますか?私はほとんどそれを得ているので。ありがとう。 – Simplicity

+0

@トニー。 ( "プリプロセッサディレクティブ"とは、コンパイルの後半に入る前に、プリプロセッサがコードに加えるべき変更についての指示です)。ここでの変更の例は何ですか?ありがとう。 – Simplicity

+0

@トニー。ここで私の多くの質問を申し訳ありません。 「プリプロセッサ」に関しては、ちょっと詳しく説明できますか?ありがとう。 – Simplicity

8

#include<iostream>は、この場合にはファイル名であることを起こるこのディレクティブに加えて、供給だけ引数で、プリプロセッサディレクティブです。

プリプロセッサディレクティブの中には、引数を取るものもあれば、そうでないものもあります。

#define FOO 1 

#ifdef _NDEBUG 
    .... 
#else 
    .... 
#endif 

#warning Untested code ! 

共通の特徴は、それらすべてが#で始めるということです。

において古くプリプロセッサ等、コンパイラのフロントエンドに渡すマクロ置換を行い、ヘッダファイルを含む前別個前処理ツールのソースコードであった最近プリプロセッサは、通常コンパイラの不可欠な部分ですが、本質的に同じ仕事をします。

0

#defineおよび#ifdefなどのプリプロセッサディレクティブは、通常、ソースプログラムを異なる実行環境で簡単に変更してコンパイルするために使用されます。ソースファイル内のディレクティブは、プリプロセッサに特定のアクションを実行するよう指示します。例えば、プリプロセッサは、テキスト内のトークンを置き換えることができ、ソース・ファイルに他のファイルの内容を挿入...

#includeそれは、コンパイラのプリプロセッサ部による使用であることを意味プリプロセッサディレクティブです。これはコンパイルプロセスの前に発生します。 #includeには 'what'を含める必要があります。これは引数iostreamによって提供されます。これはプリプロセッサにファイルiostream.hを含めるように指示します。

詳細情報:

+0

"#includeには 'what'を指定する必要があります。これは引数iostreamによって指定されます。これは、iostream.hファイルをインクルードするようにプリプロセッサに指示します。いいえ、そうではありません。プリプロセッサにファイル 'iostream'を含めるように指示します。 –

関連する問題