预处理语句就是以#开头的语句。这些语句类型如下:
- #include:包含头文件
- #define:宏定义
- #undef:取消宏定义
- #ifdef,#endif:成对使用,判断是否定义了某个宏
宏定义
宏定义的本质就是原样替换,写什么值就替换成什么。
形式:#define 名字 值
1、示例使用
示例1:基本使用
#define PI 3.14
printf("%d",PI);//这实质就是执行printf("%d",3.14);将PI用3.14替换
示例2:利用宏定义中的值是其他的宏
#define a 1
#define b 2
#define c (a+b)//使用宏来充当值
printf("%d",c);//这实质就是执行printf("%d",(1+2));
示例3:宏定义实现代码开关
#define DEBUG//用作开关时,后面不跟值
#ifdef DEBUG
printf("DEBUG");//如果宏定义了DEBUG,就执行这个语句
#endif
/* #ifdef 与 #endif 配对出现*/
示例4:改变宏定义的值
#define a 100
/* ...一些代码 */
#undef a //取消a的宏定义
#define a 200//重新定义a为200
示例5:传参数的宏
#define MAX(a,b) ((a)>(b)?(a):(b))
/* 调用 */
MAX(1,2)//即a=1,b=2,这实际就是((1)>(2)?(1):(2))
2、注意点
注意点1:当宏定义的值为表达式时,需要加括号
#define N (3+2) //这里不能写3+2,必须写(3+2)