我想知道为什么这样的代码在编译时会产生以下错误:
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)
#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)
| 归档时间: |
|
| 查看次数: |
2447 次 |
| 最近记录: |