C++ インクルード パスの概念
- Visual Studio IDE の C++ インクルード パス ディレクトリ
- C++ にパスを含める方法
- プリプロセッサがパスを検索する方法
-
#include ""
と#include <>
の違い
インクルード パスは、ヘッダー ファイルを探す場所をコンパイラに伝えるために使用されます。 コンパイラは、一致する名前のヘッダー ファイルが見つかるまで、これらのパスで指定されたディレクトリを検索します。
Visual Studio IDE の C++ インクルード パス ディレクトリ
インクルード パスは、通常はコマンド ラインで、コンパイラへの引数として指定されます。 通常、インクルード パス ディレクトリは次の場所にあります。
C:\Program Files\Microsoft Visual Studio 14.0\VC
このディレクトリを追加するには、以下の手順に従う必要があります。
-
Visual Studio IDE を開きます。
-
[ビルド] タブで、[構成マネージャー] を選択します。
-
コンパイラを選択し、[開く] をクリックします。
-
VC++ ディレクトリをクリックします。
-
[ファイルを含める] をクリックし、[新しいパスを追加] をクリックします。
-
目的のフォルダのパスを入力するか、ボタンをクリックして参照します。
-
このディレクトリを選択したら、[追加] をクリックします。 この新しい場所は、[インクルード ディレクトリ] タブの下のディレクトリのリストに追加されます。
C++ にパスを含める方法
C++ にパスを含める方法はいくつかあります。 最も一般的な方法は、プリプロセッサ ディレクティブを使用することです。
プリプロセッサ ディレクティブは、実際のプログラムをコンパイルする前に何らかのコードを実行するようコンパイラに指示するキーワードです。 定数やマクロを定義したり、プログラムに他のファイルを含めたりするために使用できます。
C++ にパスを含める別の方法は、マクロを使用することです。 マクロは、識別子または単一のトークンとして表現するその他の文字列の代わりに使用できる別のタイプの関数です。
これらの関数は通常、長い行があり、Hello World
の代わりに hello world
のように短い行に置き換えたい場合など、単純なテキスト置換に使用されます。
プリプロセッサがパスを検索する方法
プリプロセッサは C++ インクルード パス ディレクトリでヘッダー ファイルを検索し、コンパイル プロセスに含めます。 検索順序は、左から右、上から下です。
インクルード パス ディレクトリにリストされているディレクトリのいずれかにある場合、ヘッダー ファイルはデフォルトでインクルードされます。 ヘッダー ファイルがこれらのディレクトリのいずれにも見つからない場合は、現在のディレクトリで検索され、見つかった場合、または検索する親ディレクトリがなくなるまで、すべての親ディレクトリで検索されます。
ヘッダー ファイルが見つからない場合はエラー メッセージが表示され、指定しないとコンパイルは失敗します。
インクルード ファイルの完全で明確なパス指定を二重引用符で囲むと、プリプロセッサはそのパス指定のみを検索し、通常のディレクトリは無視します。
#include ""
と #include <>
の違い
#include ""
は、プログラマによって定義されたヘッダー ファイル用です。 プログラマが独自のヘッダー ファイルを作成した場合は、ヘッダー ファイルの名前を引用符で囲む必要があります。
一方、#include <>
は、定義済みのヘッダー ファイルをインクルードするために使用されます。 ヘッダー ファイルが事前定義されている場合は、ヘッダー ファイルの名前を角かっこで囲みます。
いくつかの例について説明しましょう。
#include <stdio.h>
#include <iostream>
#include "adil.h"
これらは、C++ でパス ファイルをインクルードするためのいくつかの例です。
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook