Compile Error with: switch, “expected expression before”

后端 未结 3 1592
礼貌的吻别
礼貌的吻别 2020-12-07 18:28

Cut to the chase I have recreated my problem as it is fairly self explanatory.

this complies without error:

switch (n) {
    case 1         


        
相关标签:
3条回答
  • 2020-12-07 18:42

    You can't declare a variable as the first statement in a case without brackets, and in many other contexts in C-based languages. See Declaring variables inside a switch statement for details.

    0 讨论(0)
  • 2020-12-07 18:45

    In normal C you'd have to enclose this in brackets in both cases. I suspect this may fix your problem:

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

    See this SO question for more info.

    Another way to get around this problem is to put a statement between the case label and the first declaration as you've done in your working example above. See the comments and Quinn Taylor's answer for more info.

    0 讨论(0)
  • 2020-12-07 18:48
    case 0: {
        Loading my nib file;
        break; 
    }
    case 1: {
        Loading another nib file;
        break; 
    }
    Note that if you don't have an assignment (x = y) right after the case it won't be a problem. For example:
    
    0 讨论(0)
提交回复
热议问题