cpp预处理器输出无法理解?
对不起,如果我的问题非常基本。 我想了解预处理器cpp产生的输出。 假设我有一个非常基本的跟随程序。
#include #include int x=100; int main () { printf ("\n Welcome..\n"); }
我执行以下命令。
cpp main.c main.i
在main.i
# 1 "/usr/include/stdio.h" 1 3 4
上面这行是什么意思?
gcc文档恰当地解释了C预处理器输出。
以下是相关部分:
C预处理器的输出看起来很像输入,除了所有预处理指令行都替换为空行和所有带空格的注释。 空行的长行被丢弃。
源文件名和行号信息由表单行传达
# linenum filename flags
这些被称为线性标记 。 它们根据需要插入到输出中(但从不在字符串或字符常量内)。 它们意味着以下行起源于文件filename在line linenum 。 filename永远不会包含任何非打印字符; 它们被八进制转义序列取代。
文件名后面有零个或多个标志,即
1',
2’,3', or
4’。 如果有多个标志,则空格将它们分开。 这是标志的意思:
1
这表示新文件的开始。
2
这表示返回文件(包含另一个文件后)。
3
这表示以下文本来自系统头文件,因此应禁止某些警告。
4
这表示以下文本应被视为包含在隐式extern“C”块中。