プログラムを書いたとき、私は のようなライブラリを含め#include <iostream>
ました。だけでなく#include "iostream"
、正しく、コードはエラーや問題なくコンパイルされます。
< >
だから、私はとの違いは何だろうと思ってい" "
ますか?
プログラムを書いたとき、私は のようなライブラリを含め#include <iostream>
ました。だけでなく#include "iostream"
、正しく、コードはエラーや問題なくコンパイルされます。
< >
だから、私はとの違いは何だろうと思ってい" "
ますか?
二重引用符のインクルードは、インクルードディレクトリでインクルードされたヘッダーファイルを検索する前に、まずローカルディレクトリでインクルードされたヘッダーファイルを検索するようにコンパイラーに指示するために使用されます。コードのローカルヘッダーファイルにインクルードしようとすると、この違いがわかります。'<>'を使用してローカルヘッダーファイルをインクルードした場合、ローカルディレクトリが' include'ディレクトリパスでない限り、コンパイラは失敗します。
を使用する< >
と、コンパイラはシステム指定のディレクトリ/ディレクトリ(たとえば、環境変数に設定したもの)でのみヘッダーを検索します。include
を使用する" "
と、コンパイラは最初にローカルディレクトリを検索し、それが失敗した場合は、使用したのと同じように再検索します< >
。技術的には(つまり、標準によれば)「ローカル」ディレクトリである必要はありませんが、基本的に私が知っているすべてのコンパイラでこのように機能します)。
気になる方のために説明すると、標準の公式の表現は実際には漠然としたものです(§16.2/ 2-3)。
フォームの前処理ディレクティブ
# include <h-char-sequence> new-line
実装で定義された場所のシーケンスで、<と>の区切り文字の間の指定されたシーケンスによって一意に識別されるヘッダーを検索し、そのディレクティブをヘッダーのコンテンツ全体に置き換えます。場所の指定方法または識別されるヘッダーの方法は、実装によって定義されます。
フォームの前処理ディレクティブ
# include "q-char-sequence" new-line
そのディレクティブを、「区切り文字」の間の指定されたシーケンスで識別されるソースファイルのコンテンツ全体に置き換えます。指定されたソースファイルは、実装定義の方法で検索されます。この検索がサポートされていない場合、または検索が失敗した場合、ディレクティブは読み取りのように再処理されます
# include <h-char-sequence> new-line
元のディレクティブからの同一の含まれるシーケンス(存在する場合は>文字を含む)。
<>はコンパイラが提供するヘッダーファイルのみを検索し、 ""は最初にプロジェクトディレクトリを検索し、コンパイラが提供するヘッダーファイルがない場合にのみ検索します。
ソースファイルの横にiostreamというファイルを追加します。ここで、「」を含めて失敗するのを監視するか(空のファイルを取得するため)、<>を使用して成功するのを監視します(ローカルファイルを無視するため)。
"XXX" - あなたの 1 つのディレクトリにあります。- Microsoft の SDK または任意の SDK に含まれています (