【问题标题】:GCC option -save-temps numbers after header files头文件后的 GCC 选项 -save-temps 数字
【发布时间】:2018-09-02 17:35:01
【问题描述】:

当我在 gcc 上使用选项 -save-temps 编译代码时,存储预处理输出的结果 filename.i 具有如下行:

#44 "/usr/include/stdio.h" 3 4
struct _IO_FILE;

其中44/usr/include/stdio.h 中包含代码struct _IO_FILE; 的行号。我想知道标题名称后的3 4 是什么。我搜索了man gcc,但没有找到解释。

【问题讨论】:

标签: c gcc c-preprocessor


【解决方案1】:

https://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html#Preprocessor-Output:

源文件名和行号信息通过表格的行来传达

# linenum filename flags

这些被称为线标记。它们根据需要插入到输出中(但从不在字符串或字符常量中)。它们意味着以下行源自文件 filename 的行 linenumfilename 永远不会包含任何非打印字符;它们被八进制转义序列替换。

文件名后面有零个或多个标志,它们是1234。如果有多个标志,则用空格分隔它们。以下是标志的含义:

  • 1 - 这表示新文件的开始。

  • 2 - 这表示返回到一个文件(在包含另一个文件之后)。

  • 3 - 这表示以下文本来自系统头文件,因此应禁止某些警告。

  • 4 - 这表示应将以下文本视为包含在隐式 extern "C" 块中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    相关资源
    最近更新 更多