流程:预处理 -> 编译 -> 汇编 -> 链接 -> 执行
1 预处理
预处理 = 文本粘贴工作
#include <stdio.h>
#define MSG "Hello \
World!\n"
int main() {
printf(MSG /* "hi!\n" */);
#ifdef __riscv
printf("Hello RISC-V!\n");
#endif
return 0;
}
命令:gcc -E a.c,会产生a.c的预处理文件,发现会把stdio.h(/usr/include/stdio.h)粘贴到预处理文件中。
1.1 编译器如何找到头文件(gcc如何找到stdio.h)
方法: 阅读工具的日志(查看是否支持verbose, log等选项)
gcc -E a.c --verbose > /dev/null
verbose 的意思就是打印出编译连接时的详细信息。
/dev/null:丢掉预处理结果
给出了搜索头文件的顺序:
#include “…” se