c - 如何查看 #include 包含的 header 的位置?

标签 c gcc

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

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

最佳答案

您可以使用-E标志。

gcc -E source.c

这将向您显示“带注释”的预处理源,包括使用 <> 包含的 header 的绝对路径以及使用 "" 包含的 header 的相对路径。请记住,这将是一个漫长的过程,特别是如果您包含大量系统 header (其中又包括特定于实现的 header 等)。

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

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

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

关于c - 如何查看 #include 包含的 header 的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962020/

相关文章:

c - 如何更改以下 Makefile 以使其适用于 MacOS?

c - 为什么没有 INT_BIT?

macos - 如何在Mac OS X上进行ARM交叉编译(错误: invalid listing option `r' - cross compiling error)

c++ - 使用 C++11 原子编写(旋转)线程屏障

c++ - GCC 错误还是 UB?这段代码应该编译吗?

c++ - 我可以使用 GCC 将 C/C++ 代码编译为操作码级 C

c - 我需要检查我的数组输入是整数还是阿尔法,但我的程序一直循环

c - OpenCL 演示程序可以在一个系统上运行,但不能在其他非常相似的 VirtualBox 系统上运行

c - 链表-编译错误含义

c++ - 如何使用多个源文件通过 gcc 创建单个目标文件