可以使用 -E 指令来预处理 .c 文件
即使预处理一个空文件也会生产一个乱七八糟的东西
# empty.c 为一个空的文件
gcc -E empty.c
[dc2-user@10-255-20-75 lab0]$ cat empty.c
[dc2-user@10-255-20-75 lab0]$ gcc -E empty.c
# 1 "empty.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "empty.c"
这些莫名奇妙的东西叫做 linemarkers
我自己理解了一下
# 1 "/usr/include/stdc-predef.h" 1 3 4
// 表示下面的一行 来自 这个文件的第一行
// 1 表示是个新行
// 2 表示要进去一个新的文件了
// 3 表示来自于系统头,要抑制警告
// 4 表示 下面的内容 包在 extern “C” 中
使用 -P 可以清除 linemarkers
这个东西在某些情况下是方便汇编的。~~~
[dc2-user@10-255-20-75 lab0]$ gcc -E empty.c
# 1 "empty.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "empty.c"
[dc2-user@10-255-20-75 lab0]$ gcc -E -P empty.c
[dc2-user@10-255-20-75 lab0]$
# 没有这些乱七八糟的东西了
pps 预处理会删除注释
[dc2-user@10-255-20-75 lab0]$ cat mytest.c
// hehe
main
[dc2-user@10-255-20-75 lab0]$ gcc -E -P mytest.c
main
[dc2-user@10-255-20-75 lab0]$