如何查看#include中包含的标题的位置?

时间:2013-04-12 02:17:52

标签: c gcc

我希望能够在编译时看到实际包含哪个标头。例如,我有两个非常不同的check.h文件(一个是linux-header,另一个来自单元测试系统)。

gcc或某些语言命令/宏中是否有设置可以显示包含头文件的位置?

2 个答案:

答案 0 :(得分:3)

您可以使用-E标记。

gcc -E source.c

这将显示“带注释”的预处理源,包括使用<>包含的标头的绝对路径以及使用""包含的标头的相对路径。请记住,通过这一过程会很多,特别是如果你包含很多系统头文件(反过来又包含特定于实现的头文件等)。

使用grep,您可以使用以下方法过滤这些结果:

gcc -E source.c | grep '^# 1 '

# n是一个注释,用于描述当前包含文件的行号,文件开头始终为# 1

答案 1 :(得分:2)

您可以尝试将-MD添加到编译命令中。这将生成一个依赖文件(适用于Make),它将告诉您源代码所依赖的所有包含文件。

这可以添加到现有的编译命令中,而不用担心会破坏编译,因为它会生成依赖文件作为正常编译的副作用。