0

嘿,看看代码:

#define SUFFIX(n)  (switch(n)                                               \
                   {                                                        \
                        case 1: printf("st\n");                             \
                        break;                                              \
                                                                            \
                        case 2: printf("nd\n");                             \
                        break;                                              \
                                                                            \
                        case 3: printf("rd\n");                             \
                        break;                                              \
                   }                                                        \
                   )                                                        

在 main 中调用上述宏:

int main()
{
    printf("%s", suffix(1));
}

但是当我调用它时,我收到一条错误消息:

expected expression before switch

但是我缺少什么表达方式?

4

1 回答 1

6

你试图做的事情是行不通的。switch是一个语句,但printf需要一个表达式。

选项1:

()从你的括号中删除#define,简单地说SUFFIX(1)没有printf.

#define SUFFIX(n)  switch(n)                                               \
                   { case 1: printf("st\n"); break;                        \
                     case 2: printf("nd\n"); break;                        \
                     case 3: printf("rd\n"); break;                        \
                   }
int main()
{
    SUFFIX(1);
}

选项 2:

#define SUFFIX(n) ( n == 1 ? "st" : (n == 2 ? "nd" : (n == 3 ? "rd" : "")) )
int main()
{
  printf("%s", SUFFIX(1));
}

选项 3 和 4:

使上述之一成为功能。第一个返回void,第二个返回char *

于 2013-02-09T23:11:14.093 回答