gcc 预处理

可以使用 -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 ""
# 1 ""
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "" 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 ""
# 1 ""
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "" 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]$ 

你可能感兴趣的:(gcc 预处理)