2012-04-24 11 views
0

可能性の重複:
What is the difference between #include <filename> and #include “filename”?<iostream>と#includeの "iostream"(引用符)の違いは?

私は私のプログラムを書いたとき、私は#include <iostream>のようなライブラリが含まれています。 #include "iostream"も正しく、コードはエラーや問題なくコンパイルされます。

< >" "の違いは何ですか?

+1

私はあなたが重複を見て願っています、すべての答えは間違っています。 – juanchopanza

答えて

1

あなたが< >を使用すると、コンパイラだけヘッダーのためのシステムが指定したディレクトリ/ディレクトリ(例えば、あなたがinclude環境変数に設定したものは何でも)に見えます。

" "を使用すると、コンパイラはローカルディレクトリを最初に検索し、失敗した場合は< >と同じように再検索します。技術的には(つまり、標準に従って)、「ローカル」ディレクトリである必要はありませんが、それは基本的にどのコンパイラでも動作します。あなたが気にする場合には

は、標準からの正式な文言は、実際には(§16.2/ 2-3)の種類の曖昧です:

フォーム

# include <h-char-sequence> new-line

の前処理指令特定の シーケンスによって<と>デリミタの間で一意に識別されるヘッダの実装定義のシーケンスのシーケンスを検索し、そのディレクティブを内容全体で置き換えます。ヘッダーの。どのように場所が指定されるか、またはヘッダーが識別されるかは実装定義です。

形態

# include "q-char-sequence" new-line

の前処理指令は、「区切り文字の間に指定 配列によって識別されたソース・ファイルの全体の内容によってその命令の交換を引き起こす。という名前のソースファイルを検索します実装で定義された の方法で定義されています。この検索がサポートされていない場合、検索に失敗した場合には(もしあれば、文字>を含む)、それは本来の指令から同じ含まれる配列と

# include <h-char-sequence> new-line

を読んでいるかのように、または、ディレクティブが再処理されます。

0

< "は、プロジェクトディレクトリを最初に探し、コンパイラが提供するヘッダファイルのみが存在するかどうかを調べます。

ソースファイルの隣にiostreamというファイルを追加します。ここで ""と一緒にインクルードし、それが失敗するのを見て(空のファイルを取得するので)、<>を使用して、それが成功するのを見ます(ローカルファイルを無視するので)。

1

二重引用符includeは、インクルードディレクトリで検索する前に、ローカルディレクトリ内のインクルードされたヘッダファイルを最初に探すようにコンパイラに指示するために使用されます。あなたのコードのローカルヘッダファイルをインクルードしようとしているときに、この違いを見ることができます。ローカルヘッダファイルをインクルードするために '<>'を使用した場合、ローカルディレクトリが 'include'ディレクトリパスでない限り、コンパイラは失敗します。

0

"XXX" - あなたの1つのディレクトリにあります。 - それはマイクロソフトのSDK、または任意のSDKで追加することができます(

関連する問題