C语言的预处理
1.简单宏替换
定义
#define INT_SIZE sizeof(int)
优点:
- 减少不必要的修改,提升程序的可预读性.
- 提升代码的可移植性
undef
** 设定宏名的作用域**
2.带参数的宏替换
定义
#define 宏名(参数表) 字符串
注意事项;
- 宏名和参数表的括号间不能有空格
- .宏替换只做替换,不做计算和表达式求解,这一点要格外注意。
- 函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存。
- 宏的哑实结合(哑实结合类似于函数调用过程中实参替代形参的过程)不存在类型,也没有类型转换。
可变参数
#define print(……) printf(__VA_ARGS__)
3.带参数的宏替换
例子;
#define N 3
#define N_CUBE N*N*N
#define CUBE_ABS((N_CUBE>0)?(N_CUBE):-1*(N_CUBE))