编译C程序有很多步骤,其中第一步被称作预处理(preprocessing) ,C预处理器在源代码被编译之前对其做一些文本性质的操作。主要任务包括删除注释、插入被#include指令包含的文件内容、定义和替换由#define指令定义的符号以及确定代码的部分内容是否应该根据一些条件编译指令进行编译
一.简单的字符替换
![](https://img.haomeiwen.com/i683523/5bf9931a86c64662.png)
二.带有参数宏
![](https://img.haomeiwen.com/i683523/e114ce099e9647b0.png)
三.宏参数插入到字符串中
![](https://img.haomeiwen.com/i683523/fde2ae89fc07221d.png)
![](https://img.haomeiwen.com/i683523/24bebedeaa7df600.png)
四.移除一个宏定义 然后重新定义宏定义
![](https://img.haomeiwen.com/i683523/99aeb458642d5313.png)
![](https://img.haomeiwen.com/i683523/d88898fc340b5079.png)
五.判断一个符号是否被定义
![](https://img.haomeiwen.com/i683523/30c48d3c8997aaab.png)
![](https://img.haomeiwen.com/i683523/b794e4bb62c3a66b.png)
六.利用 ## 连接宏两边的符号 合并成一个符号
![](https://img.haomeiwen.com/i683523/15ed65c2eb05df3b.png)
![](https://img.haomeiwen.com/i683523/0faf5bba104d81a1.png)
警告总结:
不要在一个宏定义的末尾加上分号,使其成为一个完整的语句。
在红定义中使用参数,一定要注意在它们周围加上括号,在整个宏定义两边加上括号
避免使用宏定义函数实现较长序列的代码
网友评论