5.21 do–while(0)
do–while(0)
为什么要这么定义?
- 实现复杂的宏定义:函数式宏、复合语句
- 使用局部变量
- 在条件语句中使用复杂的宏定义
例程
解决宏展开的问题
if(0)
PRINT(a)
#include<stdio.h>
struct student{
char name[20];
int age;
};
#define PRINT(a) do{printf("%s\n",a.name);printf("%d\n",a.age);}while(0);
int main(void)
{
struct student stu={
"wit",20
};
if(0)
PRINT(stu)
return 0;
}