使用此选项,我接收预处理后的文件。有很多这样的行:
# 91 "/usr/include/stdint.h" 3 4
这些数字是什么意思?首先,我认为#91
是包含文件的行数,但事实并非如此。关于3 4
我一点也不知道
根据官方文档,该行的格式为:
# linenum filename flags
linenum
表示以下行起源于该行号的filename
。然后有四个标志:
-
1
-新建文件 -
2
-返回到文件 -
3
-系统头文件 -
4
-将其视为包裹在extern "C"
中
那么让我们来解释你的行标记:
# 91 "/usr/include/stdint.h" 3 4
下面这行源自/usr/include/stdint.h
的第91行。它是一个系统头文件,应该被当作extern "C"
包装。
这些被称为"行标记"。来自文档:
源文件名和行号信息由
格式的行传递# linenum filename flags
这些被称为行标记。它们会根据需要插入到输出中(但绝不会插入到字符串或字符常量中)。它们的意思是下面的行起源于文件filename的
linenum
行。filename
永远不会包含任何非打印字符;它们被替换为八进制转义序列。文件名后面是零个或多个标志,分别是
‘1’
、‘2’
、‘3’
或‘4’
。如果有多个标志,则用空格分隔。以下是这些标志的含义:
‘1’
-这表示新文件的开始。‘2’
-这表示返回到一个文件(在包含另一个文件之后)。‘3’
-这表明下面的文本来自系统头文件,所以某些警告应该被抑制。‘4’
-这表明下面的文本应该被视为包裹在一个隐式的extern "C"
块中。
有标志(空格分隔),其含义为:
1 - Start of a new file
2 - Returning to previous file
3 - Following text comes from a system header file (#include <> vs #include "")
4 - Following text should be treated as being wrapped in an implicit extern "C" block.