理解用C处理的hello world源代码

理解用C处理的hello world源代码,c,C,我有一个hello world程序,其源代码为C,如下所示: For #include <stdio.h> #define MESSAGE "Hello, world!" int main() { puts(MESSAGE); return 0; } 用于#包括 #定义消息“你好,世界!” int main() { 放置(消息); 返回0; } 现在,如果我们通过gcc对源代码进行预处理,我们会走在前面: # 1 "hello-world.c" # 1 "&l

我有一个hello world程序,其源代码为C,如下所示:

For #include <stdio.h>

#define MESSAGE "Hello, world!"

int main()
{
    puts(MESSAGE);
    return 0;
}
用于#包括
#定义消息“你好,世界!”
int main()
{
放置(消息);
返回0;
}
现在,如果我们通过gcc对源代码进行预处理,我们会走在前面:

# 1 "hello-world.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "hello-world.c"
# 1 "/usr/include/stdio.h" 1 3 4
# 28 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 361 "/usr/include/features.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 365 "/usr/include/sys/cdefs.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 366 "/usr/include/sys/cdefs.h" 2 3 4
# 362 "/usr/include/features.h" 2 3 4
# 385 "/usr/include/features.h" 3 4
# 1 "/usr/include/gnu/stubs.h" 1 3 4
#1“hello world.c”
# 1 ""
# 1 ""
#1“hello world.c”
#1“/usr/include/stdio.h”1 3 4
#28“/usr/include/stdio.h”3 4
#1“/usr/include/features.h”1 3 4
#361“/usr/include/features.h”3 4
#1“/usr/include/sys/cdefs.h”1 3 4
#365“/usr/include/sys/cdefs.h”3 4
#1“/usr/include/bits/wordsize.h”1 3 4
#366“/usr/include/sys/cdefs.h”2 3 4
#362“/usr/include/features.h”2 3 4
#385“/usr/include/features.h”3 4
#1“/usr/include/gnu/stubs.h”1 3 4

我的问题显然是,#1会被重复,以此类推。那么这意味着什么呢?#28和#365和#385是什么意思?

这些是给定文件中的源行号。例如,
#28”/usr/include/stdio.h“34
位于源自
stdio.h
第28行的行之前

您可以通过GCC的预处理器输出阅读更多内容。您显示的行的格式为:

# linenum filename flags
另请参见此处: