gcc错误:'else'之前的预期表达式

use*_*113 0 c gcc

我想知道为什么这样的代码在编译时会产生以下错误:

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;
}
Run Code Online (Sandbox Code Playgroud)

P0W*_*P0W 8

 #define xprintk(...)    while(0)
                                ^^ Remove semi-colon
Run Code Online (Sandbox Code Playgroud)

看看预处理后会发生什么

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;
}
Run Code Online (Sandbox Code Playgroud)