0

変更可能な変数をスイッチ ケース ラベルとして使用するにはどうすればよいでしょうか。つまり、マクロが定義されています。ただし、条件に応じて実行時にこの値を変更する必要があります。どうすればこれを実装できますか?

以下に例を示します。

ここで、ケース「FOO」は機能しますか?

#define CONDITION (strcmp(str, "hello") == 0)
#define FOO1 (10)
#define FOO2 (20)
#define FOO ((CONDITION) ? (FOO1) : (FOO2))


char *var="hello";

int main()
{
  int p = 20;
  switch(p) {
  case FOO:
      printf("\n case FOO");
      break;
  case 30:
      printf("\n case 30");
      break;
  default:
      printf("\n case default");
      break;
  }

    return(0);
}

4

2 に答える 2

3

条件はswitchコンパイル時に解決する必要があります。値はcaseコンパイル時の定数式である必要があります

あなたの質問から、ランタイム条件を使用して の値を変更したいcaseので、それは不可能です。

実行時チェックを実現する 1 つの方法は、if条件を使用することです。

于 2013-10-19T02:16:51.307 に答える