【问题标题】:Understanding the processed hello world source code in C [duplicate]理解用 C 处理的 hello world 源代码 [重复]
【发布时间】:2014-09-08 15:34:57
【问题描述】:

我有一个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 是什么意思?

【问题讨论】:

标签: c


【解决方案1】:

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

您可以通过 GCC 的预处理器输出 here 了解更多信息。您显示的行的格式是:

# linenum filename flags

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 2014-07-25
    • 2020-04-26
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    相关资源
    最近更新 更多