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