Ошибка компиляции с помощью: switch, "ожидаемое выражение перед"
Отрежьте преследование, я воссоздал свою проблему, поскольку она довольно понятна.
это выполняется без ошибок:
switch (n) {
case 1:
NSLog(@"");
NSString *aStr;
break;
default:
break;
}
это компилируется с ошибкой, и он пропускает только NSLog():
switch (n) {
case 1:
NSString *aStr;
break;
default:
break;
}
он выдает ошибку при компиляции "Ожидаемое выражение перед" NSString "
Я что-то пропустил?
Ответы
Ответ 1
В обычном C вам придется заключить это в скобки в обоих случаях. Я подозреваю, что это может решить вашу проблему:
case 1:
{
NSLog(@"");
NSString *aStr;
break;
}
См. этот вопрос SO для получения дополнительной информации.
Другой способ обойти эту проблему - поставить инструкцию между меткой case и первым объявлением, как это было сделано в приведенном выше примере работы. См. Комментарии и ответ Куинн Тейлор для получения дополнительной информации.
Ответ 2
Вы не можете объявить переменную как первый оператор в case
без скобок и во многих других контекстах на языках C. Подробнее см. Объявление переменных внутри оператора switch.
Ответ 3
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: