使用 c语言的宏是在预处理时候对字符进行简单替换. 优点:1.如果要改一个变量,只需要改宏就可以了,也就是只改一次;2.宏函数展开和普通函数一样,但是它没有普通函数调用的过程,不需要压栈出栈等操作,所以效率高. 缺点:增大了编译后可执行文件的大小 比如常见的 #define MAX(a,b) ((a)>(b)?(a):(b)) 变量使用括号包围,否则这样调用时 MAX(+,+) 结果并不是我们想要的 即使使用括号包围了,宏依然是有陷阱的,比如这样调用 a = ; MAX(a++, ) 宏展开之后