一、概念
宏是工作在c预处理阶段的一种文本替换工具,编译后对二进制代码不可见;
由于是纯替换所以不会对其进行语法检测建议多用();
二、用法
(1)、#define main(a,b) a<b?a:b
main(int a,int b)在预处理时会被替换为 a<b?a:b,这是宏函数的使用;
(2)、宏体换行需要在行末加反斜杠\;
(3)、在使用宏时不要在后面加";"它不报错但是它会将后面本来的语句加上
“;”之后再替换,可能会导致程序错误;
(4)、宏的使用是先替换后运算,所以一定注意运算符的优先级;
(5)、在宏体中,如果在宏参数上加个“#”,那么宏体替换时会被替换为字符
串的形式;
#define WARN_IF(EXP) \ do { if (EXP) \ fprintf (stderr, "Warning: " #EXP "\n"); } \ while (0)
WARN_IF (x == 0);
会被扩展成:
do { if (x == 0) fprintf (stderr, "Warning: " "x == 0" "\n"); } while (0);!欢迎大家指出不足之处