使用MACROS减少代码行

时间:2014-02-24 02:08:37

标签: c

我对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;
   }
}

感谢

1 个答案:

答案 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;
}

正如您所看到的那样,这是无效的语法。