预处理零件

时间:2015-11-29 12:59:42

标签: c

我正在逐步学习如何将c代码编译成可执行文件 目前正在分析预处理阶段。

我感兴趣的是以#符号开头的额外行,它出现在预处理文件中。

例如,文件“precprocessed.c”:

int main(void) {
    return 0;
}

获取预处理到文件“preprocessed.c”:

# 1 "unpreprocessed.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "unpreprocessed.c"
int main(void) {
     return 0;
}
运行linux命令后

gcc -E unpreprocessed.c >preprocessed.c

有人可以解释那些额外的行(例如#1“/usr/include/stdc-predef.h”1 3 4)是什么意思?

请注意,预处理文件已成功编译到 运行命令

的可执行文件
gcc preprocessed.c

(如此成功地再次传递预处理以及其他部分)

另外,如果我再次尝试预处理预处理文件,我会得到那些 行复制两次,但

除外
# 1 "unpreprocessed.c" 

更改为

# 1 "preprocessed.c"

0 个答案:

没有答案