1、宏常用模式
#define MIN(A,B) ((A)<=(B)?(A):(B)) //结尾无分号,参数和整个宏最好都用括号括住。
2、要防止宏副作用
如:宏定义#define MIN(A,B) ((A) <= (B) ? (A) : (B))对MIN(*p++, b)的作用结果是:
((*p++) <= (b) ? (*p++) : (b))
这个表达式会产生副作用,指针p会作二次++自增操作。
#define MIN(A,B) ((A)<=(B)?(A):(B)) //结尾无分号,参数和整个宏最好都用括号括住。
如:宏定义#define MIN(A,B) ((A) <= (B) ? (A) : (B))对MIN(*p++, b)的作用结果是:
((*p++) <= (b) ? (*p++) : (b))
这个表达式会产生副作用,指针p会作二次++自增操作。