cpp预处理器输出无法理解?

cpp预处理器输出无法理解?,c,gcc,c-preprocessor,C,Gcc,C Preprocessor,对不起,如果我的问题很基本。我想了解预处理器cpp产生的输出。假设我有一个非常基本的以下程序 #include <stdio.h> #include <stdlib.h> int x=100; int main () { printf ("\n Welcome..\n"); } 大体上,我 # 1 "/usr/include/stdio.h" 1 3 4 上面这一行是什么意思?。恰当地解释了C预处理器的输出 以下是相关章节: C预处理器的输出与输入非常相似,

对不起,如果我的问题很基本。我想了解预处理器cpp产生的输出。假设我有一个非常基本的以下程序

#include <stdio.h>
#include <stdlib.h>

int x=100;
int main ()
{
    printf ("\n Welcome..\n");
}
大体上,我

# 1 "/usr/include/stdio.h" 1 3 4
上面这一行是什么意思?。

恰当地解释了C预处理器的输出

以下是相关章节:

C预处理器的输出与输入非常相似,只是所有预处理指令行都已替换为空行,所有注释都带有空格。长时间运行的空行将被丢弃

源文件名和行号信息由表单的行传递

# linenum filename flags
这些被称为线标记。它们会根据需要插入到输出中(但决不会插入到字符串或字符常量中)。它们的意思是,下面的一行源于linenum行的文件名。文件名永远不会包含任何非打印字符;它们被八进制逃逸序列所取代

文件名之后是零个或多个标志,它们是
1
2
3
4
。如果有多个标志,则用空格分隔它们。以下是旗帜的含义:

1
这表示新文件的开始。
2
这表示返回到一个文件(在包含另一个文件后)。
3
这表示以下文本来自系统头文件,因此应抑制某些警告。
4
这表明应将以下文本视为包装在隐式外部“C”块中

下面的示例恰当地解释了C预处理器的输出

以下是相关章节:

C预处理器的输出与输入非常相似,只是所有预处理指令行都已替换为空行,所有注释都带有空格。长时间运行的空行将被丢弃

源文件名和行号信息由表单的行传递

# linenum filename flags
这些被称为线标记。它们会根据需要插入到输出中(但决不会插入到字符串或字符常量中)。它们的意思是,下面的一行源于linenum行的文件名。文件名永远不会包含任何非打印字符;它们被八进制逃逸序列所取代

文件名之后是零个或多个标志,它们是
1
2
3
4
。如果有多个标志,则用空格分隔它们。以下是旗帜的含义:

1
这表示新文件的开始。
2
这表示返回到一个文件(在包含另一个文件后)。
3
这表示以下文本来自系统头文件,因此应抑制某些警告。
4
这表明应将以下文本视为包装在隐式外部“C”块中


@哇,很好,你想了解预处理器。我在过去遇到过几个奇怪的C/C++问题,对于这些问题,查看预处理的输出是了解发生了什么的唯一方法。这对于包含大量
#include
s@Whoami很好,你想了解预处理器。我在过去遇到过几个奇怪的C/C++问题,对于这些问题,查看预处理的输出是了解发生了什么的唯一方法。对于包含大量
#include
的大型项目尤其如此