C语言中宏的常见用法总结
文章目录
- 1. 基本用法
- 2. 带参数的宏
- 3. 宏的嵌套定义
- 4. 包含多条语句的宏
- (1)#define AA ({})
- (2)#define BB do{}while(0)
- 5. 取消宏定义
- 6. 条件宏定义
1. 基本用法
#define 宏名 宏值
- 注:
- 宏名一般大写字母命名
- 结尾没有分号
2. 带参数的宏
#define 宏名(参数列表) 替换文本
- 注:
- 参数列表中的参数不需要声明类型,因为宏只是简单的文本替换。
- 在定义替换文本时,最好对参数加上括号,以避免运算符优先级导致的错误。
3. 宏的嵌套定义
宏可以嵌套定义,即一个宏的替换文本中可以包含其他宏
#define NUM 2
#define FUN (NUM * NUM)
在预处理阶段,FUN会根据NUM的值进行替换。
4. 包含多条语句的宏
(1)#define AA ({})
可包含多条语句,
最后一条语句执行的结果将作为宏函数的返回值
(2)#define BB do{}while(0)
可包含多条语句,
且没有返回值,只是原样替换
5. 取消宏定义
#undef 宏名 取消已经定义的宏
6. 条件宏定义
#ifdef DEBUG_MODE
#define LOG(message) printf("%s",message)
#else
#define LOG(message) ((void)0)
#endif
可以使用条件编译指令(如#ifdef、#ifndef、#if等)结合宏定义来根据不同的条件选择性地定义宏。