91

私が#include理解しているように、実際にはGCCがそれを何と見なすかを見つけることを意味します。(それは本当ですか?Clangはどのようにそれを行うのですか?)

http://gcc.gnu.org/onlinedocs/cpp/Search-Path.htmlによると、一部のコンポーネントには CPU アーキテクチャと GCC バージョンが関係しています。特に後者は扱いにくいようです。出力(または)を実行gcc --versionして解析することで取得できると思いますgcc -vが、これはせいぜいエレガントではなく、最悪の場合壊れやすいようです。プログラムがGCCでコンパイルされていると仮定して、コード内からそれを行うことは別のオプションかもしれませんが、その仮定によっては必要になります。

それを行うための推奨される方法は何ですか?

4

2 に答える 2

27

インクルードパスを見つけるための推奨される方法が何を意味するのかわかりません。標準的な方法は次のとおりです (c および c++ の場合)。

$ `gcc -print-prog-name=cc1` -v
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
 /usr/include
End of search list.
^C
$ `gcc -print-prog-name=cc1plus` -v
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/4.7
 /usr/include/c++/4.7/x86_64-linux-gnu
 /usr/include/c++/4.7/backward
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
 /usr/include
End of search list.
^C
于 2013-07-30T06:55:47.853 に答える