理解用C处理的hello world源代码
我有一个hello world程序,其源代码为C,如下所示:理解用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
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
另请参见此处: