2

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

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

4

2 回答 2

3

您可以使用该-E标志。

gcc -E source.c

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

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

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

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

于 2013-04-12T02:22:51.647 回答
2

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

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

于 2013-04-12T02:25:07.343 回答