嘿看看代码:
#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
但我错过了什么表达?
答案 0 :(得分: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 *
。