“#1”/usr/include/stdio.h“1 3 4”在“gcc -E”输出中是什么意思?

时间:2013-05-31 05:02:43

标签: c gcc

参见以下示例:

$ cat foo.c
#include <stdio.h>

int main()
{
    return 0;
}
$ gcc -E foo.c | head
# 1 "foo.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "foo.c"
# 1 "/usr/include/stdio.h" 1 3 4
# 36 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 30 "/usr/include/sys/feature_tests.h" 3 4
#pragma ident "%Z%%M%   %I%     %E% SMI"

$

我试过Google,但我不知道我应该使用哪些关键字进行搜索。任何指向文档的链接?

1 个答案:

答案 0 :(得分:4)

它们是用于识别哪个源文件和特定代码行来自哪个源代码的行标记。例如,它们可用于生成更准确的诊断消息。文档链接:

  1. Preprocessor Output
  2. Line Control
  3. 如果您愿意,可以使用-P选项省略它们。