Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compile Error with: switch, "expected expression before"

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

this complies without error:

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

this compiles with error and it's only missing the NSLog():

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

it throws an error at compile "Expected expression before 'NSString'"

Am I missing something here?

like image 320
Ross Avatar asked Jan 10 '10 11:01

Ross


1 Answers

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.

like image 105
Dan Olson Avatar answered Sep 28 '22 09:09

Dan Olson