お世話になります。
VC2005を使用しているのですが、
インクルードディレクトリの指定で質問があります。
例えば、AAAというディレクトリがあり、
その中にBBBとCCCというサブディレクトリがあるとします。
で、BBBとCCCにそれぞれファイル名(仮にtest.hとします)が同じですが
内容の違うヘッダーファイルを置いたとします。
この時に、VCのインクルードディレクトリでAAAとCCCだけを追加した場合に
#include <test.h>
とした場合は、BBBのtest.hがインクルードされてしまうのですが、
これはどのIDEでもそういうものなのでしょうか?
AAAをインクルードディレクトリにしない場合はCCCのtest.hが読み込まれます。
また、AAAのインクルードディレクトリ指定よりも上にCCCのインクルードディレクトリを
指定した場合もCCCのtest.hが読み込まれます。
IDEの実装によるのではないでしょうか?
> 例えば、AAAというディレクトリがあり、
> その中にBBBとCCCというサブディレクトリがあるとします。
インクルードのディレクトリにAAAを設定した場合には
1...#include <bbb/test.h>
2...#include <ccc/test.h>
で使い分けれる。
もしインクルードのディレクトリにBBBを設定すると
#include <test.h>
でBBBのtest.hをインクルードするのでCCCの同名ファイルはインクルードしない。
ただし、CCCもインクルードのディレクトリで設定されているとどうなるかは
分からないので適当な定数を #define で定義して#if defined(定数名)で
実際に調べた方が良い。
> AAAをインクルードディレクトリにしない場合はCCCのtest.hが読み込まれます。
> また、AAAのインクルードディレクトリ指定よりも上にCCCのインクルードディレクト
リを
> 指定した場合もCCCのtest.hが読み込まれます。
この動作は当然だと思う。
登録したインクルードのディレクトリの順番に検索している。と思うから。
> この時に、VCのインクルードディレクトリでAAAとCCCだけを追加した場合に
> #include <test.h>
> とした場合は、BBBのtest.hがインクルードされてしまうのですが、
> これはどのIDEでもそういうものなのでしょうか
これはAAAがあると、サブディレクトリもインクルードの検索対象になる
という意味だと思いますが、標準の設定で試したところVC2005ではなりません
(インクルードディレクトリにサブディレクトリを含む機能があるかどうか知りませ
ん)
AAAのディレクトリだけインクルードディレクトリに指定すると
fatal error C1083: include ファイルを開けません。
というエラーになりました
インクルード指定したディレクトリ内のサブディレクトリまで検索してくれましたっけ?
IDEによってサブディレクトリまで検索してくれる???
されないと思う。
OpenGLのヘッダファイルをインクルードするときは、基本的に
#include <gl/glu32.h> とかいう風にやってます。