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/16377386/

相关文章:

c++ - 强制或阻止使用特定次要版本的 libstdc++

java - 查看缓存 bazel 目标的编译警告

c++ - 为什么我的 C++ 代码在 ideone 和 codeforces 自定义测试中给出了 2 个不同的输出?

c - c中的输出问题

c - 长双1.#QNAN

c - 如何后修改 C 指针?

java - 找不到符号(扩展另一个类)

android - JIT 与 AOT 编译

c - 如何获取 Linux 的 lua 库以便在 C 中使用它们?

c - 使用 mingw32 在 Windows 上构建 glew 时 `DllMainCRTStartup@12' 的多个定义