我想知道为什么这样的代码在编译时会生成以下错误:
1.c:11:错误:在“else”之前需要表达式
代码:
#include <stdio.h>
#define xprintk(...) while(0);
int main (void)
{
if (1)
xprintk("aaa\n");
else
xprintk("bbb\n");
return 0;
}
最佳答案
#define xprintk(...) while(0)
^^ Remove semi-colon
查看预处理后会发生什么
gcc -E test.c
int main (void)
{
if (1)
while(0);; //<- Two semi-colon (i.e. Two statements)
else
while(0);; //<- Two semi-colon
return 0;
}