1. ホーム
  2. iphone

コンパイルエラー with: switch, "expected expression before".

2023-08-09 05:36:37

質問

私はそれがかなり自己説明であるとして、私の問題を再現しました。

これは、エラーなしで準拠しています。

switch (n) {
    case 1:
        NSLog(@"");
        NSString *aStr;
        break;
    default:
        break;
    }

これはエラーでコンパイルされます で、NSLog()が抜けているだけです。

switch (n) {
    case 1:
        NSString *aStr;
        break;
    default:
        break;
    }

コンパイル時にエラーになります。 NSString' の前に期待される式があります。 "です。

私はここで何かを見逃しているのでしょうか?

どのように解決するのですか?

通常のC言語では、両方のケースでこれを括弧で囲む必要があります。 これで問題が解決するのではないかと思います。

case 1:
{
    NSLog(@"");
    NSString *aStr;
    break;
}

参照 このSOの質問 をご覧ください。

この問題を回避する別の方法は、上記の作業例で行ったように、caseラベルと最初の宣言の間にステートメントを置くことです。 詳細については、コメントとQuinn Taylorの回答を参照してください。