我希望能够在编译时看到实际包含哪个标头。例如,我有两个非常不同的check.h文件(一个是linux-header,另一个来自单元测试系统)。
gcc或某些语言命令/宏中是否有设置可以显示包含头文件的位置?
答案 0 :(得分:3)
您可以使用-E
标记。
gcc -E source.c
这将显示“带注释”的预处理源,包括使用<>
包含的标头的绝对路径以及使用""
包含的标头的相对路径。请记住,通过这一过程会很多,特别是如果你包含很多系统头文件(反过来又包含特定于实现的头文件等)。
使用grep,您可以使用以下方法过滤这些结果:
gcc -E source.c | grep '^# 1 '
# n
是一个注释,用于描述当前包含文件的行号,文件开头始终为# 1
。
答案 1 :(得分:2)
您可以尝试将-MD
添加到编译命令中。这将生成一个依赖文件(适用于Make),它将告诉您源代码所依赖的所有包含文件。
这可以添加到现有的编译命令中,而不用担心会破坏编译,因为它会生成依赖文件作为正常编译的副作用。