使用此选项,我会在预处理后收到文件。有许多行,如:
# 91 "/usr/include/stdint.h" 3 4
这些数字是什么意思?首先,我认为#91
是包含文件的行数,但事实并非如此。关于3 4
我根本不知道。
答案 0 :(得分:8)
根据the official documentation,该行的格式为:
# 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"
。
答案 1 :(得分:5)
这些被称为“线标记”。来自documentation:
源文件名和行号信息由表格
的行传达# linenum filename flags
这些被称为线性标记。它们根据需要插入到输出中(但从不在字符串或字符常量内)。它们表示以下行起源于第
linenum
行的文件filename。filename
永远不会包含任何非打印字符;它们被八进制转义序列取代。文件名后面有零个或多个标志,
‘1’
,‘2’
,‘3’
或‘4’
。如果有多个标志,则空格将它们分开。这是标志的意思:
‘1’
- 这表示新文件的开始。‘2’
- 这表示返回文件(包含另一个文件后)。‘3’
- 这表示以下文本来自系统头文件,因此应禁止某些警告。‘4’
- 这表明以下文本应被视为包含在隐式extern "C"
块中。
答案 2 :(得分:1)
有标志(空格分隔),含义是:
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.