0

コードを見てください:

#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()
{
    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、2番目はを返しますchar *

于 2013-02-09T23:11:14.093 に答える