先看如下的宏定义:
#define CAN_PLUS(_CurVal, _Delta, _MaxVal)\
({\
bool bRet = false;\
if ((_CurVal) <= (_MaxVal))\
{\
const int32 i32Delta = (_MaxVal) - (_CurVal);\
if ((int32) (_Delta) <= (i32Delta))\
{\
bRet = true;\
}\
}\
bRet;\
})
看它有什么问题呢?
如果传入的第二个参数恰好叫做“i32Delta”,会怎么样?
使用函数可以消除这种危险。