最好将判断、循环都加上括号。
例如:
if(param1)
FUNCTION1(param1,param2);
else
do_somethings();
若#define FUNCTION1(param1,param2) do{fun2(param1,param2,NULL);param1+=param2;}while(0)
代入
if(param1)
do{fun2(param1,param2,NULL);param1+=param2;}while(0);
else
do_somethings();
无错
若#define FUNCTION1(param1,param2) {fun2(param1,param2,NULL);param1+=param2;}
代入
if(param1)
{fun2(param1,param2,NULL);param1+=param2;};
else
do_somethings();
错
若#define FUNCTION1(param1,param2) fun2(param1,param2,NULL);param1+=param2;
代入
if(param1)
fun2(param1,param2,NULL);param1+=param2;;
else
do_somethings();
错
所以,最好在宏定义使用处外面加{},特别判断、循环处加{}