理解C中已处理的hello world源代码

时间:2014-09-08 15:34:58

标签: c

我在以下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意味着什么?

1 个答案:

答案 0 :(得分:0)

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

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

# linenum filename flags