- 69
- 0
- 约2.57千字
- 约 3页
- 2019-08-05 发布于江苏
- 举报
宏替换只作替换,不做计算,不做表达式求解,不做类型检查…
可以用#undef命令终止宏定义的作用域。
宏定义可以嵌套,最多替换200+次(具体记不清了)。
防止文件重复包含
#ifndef XXX_H_
#define XXX_H_
…
#endif
编译过程控制
#ifdef _DEBUG
…
#else
…
#endif
定义常量
#define PI 3.14
带参数的宏
#define max(a,b) ((a) (b) ? (a) : (b))
包含多个语句的宏
#define msg(str) do \
{ \
…;\
…;\
}while(0)
#和##的用法
宏替换会把#后面的内容作为字符串进行替换,例子:
#define PASTE(n) abc#n
替换之后相当于”abc””n”
比如PASTE(12) - “abc12”
##用于把两侧的参数合并成一个符号,例子:
#define composite(a,b,c) a##b##c
则composite(12,12,11) - 121211
composite(“aa”,”bb”,”cc”) - “aabbcc”
注意:当宏参数是另一个宏的时候,会递归展开,但用#或##的(该)宏参数不会再展开。
a.宏定义中不存在#和## #define two 2
#defi
原创力文档

文档评论(0)