我正在逐步学习如何将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"