すべての前に../Folder1/を置く必要がないようにする方法はありますか?
はいあります。答えはいくつかの要因に依存し、私はいくつかを逃すと確信しています。
以下を確認してください。
- コンパイラ設定で、「C /C++」の下の「追加のインクルード」をチェックします
- 「VC++」で「ディレクトリを含める」の値もチェックインします
- 「C/C++/プリプロセッサ」の「標準インクルードパスを無視する」の設定を確認してください
- プリコンパイル済みヘッダーの設定を確認してください
- ソースファイルとコンパイラ設定の「#define」/「#undef」を確認してください
- プロジェクトが使用または継承している可能性のあるプロパティシートを確認してください
(<foo.h>ではなく) "foo.h"を使用する場合、プリプロセッサは最初にプロジェクト固有のフォルダを検索し、最後にIDE固有のフォルダを検索します。<foo.h>を使用する場合は、最初に標準のインクルードフォルダーから開始します。たとえば、標準のランタイムライブラリに必要なフォルダーなどです。
ファイルが「../foo.h」を使用する場合、そのファイルを含むファイルの場所からの相対パス。トリッキーな例外があります。
プリプロセッサがインクルードパスを見つける方法に影響を与える可能性のあるものは他にもたくさんあります。プリプロセッサが特定のファイルで何をしているのかわからない場合は、プリプロセッサ設定で[ファイルへの前処理]をオンにすることで、プリプロセッサの出力を表示できます。このファイルには、プリプロセッサが終了した後、コンパイラが作業を開始する前のファイルのソースコードが表示されます。
より多くの経験、特にフォルダ/プロジェクト構造とファイルを含める方法の明確な戦略により、全体がはるかに簡単になります。たとえば、各インクルードファイルの最初の非コメント行として「#pragmaonce」があることを確認してください。
これにより、次のステップのアイデアがいくつか得られることを願っています。幸運を!