我对MACROS有疑问。如果我有下一个代码,其中有一个switch语句,并且在该开关内有一些情况(从0到9),如果我尝试减少一些代码行并使用像这样的名为NUMBERS的MACRO,而不是把所有这些案件:案件'0',案件'1',案件'2',案件'3'等等。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUMBERS if(car >= 0 && car <= 9)
int main()
{
char car = '0';
function(car);
return 0;
}
void function(char car)
{
switch(car)
{
case NUMBER:
printf("It is a number\n");
break;
}
}
感谢
答案 0 :(得分:2)
宏(几乎)是一个简单的文本替换 - 就像你复制和粘贴一样。
此:
#define NUMBERS if(car >= 0 && car <= 9)
... later ...
switch(car)
{
case NUMBERS: // note NUMBERS, not NUMBER
printf("It is a number\n");
break;
}
与完全相同:
switch(car)
{
case if(car >= 0 && car <= 9):
printf("It is a number\n");
break;
}
正如您所看到的那样,这是无效的语法。