我在以下C中有一个源代码的hello world程序:
For #include <stdio.h>
#define MESSAGE "Hello, world!"
int main()
{
puts(MESSAGE);
return 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会重复,依此类推。那么这是什么意思? #28和#365和#385意味着什么?
答案 0 :(得分:0)
这些是给定文件中的源行号。例如,# 28 "/usr/include/stdio.h" 3 4
位于源自stdio.h
第28行的行之前。
您可以通过GCC的预处理器输出here阅读更多内容。您显示的行的格式为:
# linenum filename flags