compilation - GCC 预处理器输出中的调试信息

标签 compilation c gcc compiler-construction

我正在检查 GCC 生成的预处理输出,我在使用 -save-temps 标志生成的 .i 文件中看到了很多这样的输出:

# 8 "/usr/include/i386-linux-gnu/gnu/stubs.h" 2 3 4

stubs.h绝对路径前后的数字是什么意思?它似乎是由预处理器插入的某种调试信息,并允许编译器发出引用此信息的错误消息。这些行不会影响程序本身,但每个数字的具体用途是什么?

最佳答案

基于 the documentation文件名之前 的数字是行号。文件名后的数字是一个标志,含义如下:

  • 1 表示新文件的开始。
  • 2 表示返回到一个文件(包含另一个文件之后)。
  • 3 表示以下文本来自系统头文件,因此应抑制某些警告。
  • 4 表示以下文本应被视为包含在隐式 extern "C" block 中。

关于compilation - GCC 预处理器输出中的调试信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33983037/

相关文章:

c - 25 : warning: initializer element is not a constant expression

compilation - 未调用的变量

c - 包括静态库和头文件Makefile问题(C)

c - 如何使用 gtkmozembed.h 编译程序

无法在 C 中创建大型结构数组

c - 函数参数传递指针困惑

c++ - 为什么 C 和 C++ 中结构初始化的这种不同行为?

将多个 C 代码编译为一个汇编文件

compiler-construction - 不同的 JDK 更新会产生不同的 Java 字节码吗?

c - 遍历进程的 `vm_area_struct`