使用此选项我会在预处理后收到文件。有很多行,例如:
# 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.