如何判断头文件包含在哪里?

我怎么知道g ++能够find包含文件? 基本上如果我

#include <foo.h> 

g ++将扫描searchpath,使用任何包含选项来添加或改变path。 但是,在几天结束的时候,有没有一种方法可以告诉g ++select编译的foo.h的绝对path? 特别相关的是,如果在无数的searchpath中有多个foo.h。

有没有办法完成这个…有没有办法让g ++告诉我它的最终searchpath是什么,包括默认和所有包含选项?

这将使依赖关系列出包含文件的绝对path:

 gcc -M showtime.c 

如果你不想要系统包含(即#include <something.h> ),那么使用:

 gcc -MM showtime.c 
 g++ -H ... 

还将打印包含文件的完整path,显示哪个头文件包含哪个文件

确定使用

 g++ -E -dI ... (whatever the original command arguments were) 

如果使用-MM或者其中一个相关的选项( -M等),那么你只是得到了包含所有其他预处理器输出的头文件列表(你似乎用build议的g++ -E -dI解决scheme)。