我使用的Objective-C对象时switch语句中得到一个编译错误对象 - 对象:奇编译器错误时使用switch语句
switch (myConstant)
{
case 0:
UIViewController *myController = [[[UIViewController alloc] init] autorelease];
[self.navigationController pushViewController:myViewController animated:YES];
break;
case 1:
// stuff
break;
default:
break;
}
的错误状态:
Expected expression before 'UIViewController'
'myViewController' undeclared (first use in this function)
我知道第二个错误是第一个错误的直接结果,但我不明白为什么我首先得到'预期表达式'错误...
如果我把;
在case 0:
行的末尾,那么它会编译,但我不应该这样做,不是吗?
这也将无法被编译,用相同的错误:
switch (0)
{
case 0:
int a = 0;
break;
default:
break;
}
然而,如果我宣布int a;
外部的开关组,那么a = 0;
编译罚款。
我以为我明白了switch语句 - 显然我不知道。有人能解释一下吗?
您应该购买一本关于C语言的书。交换机内部的情况必须跟着一个声明。你跟着它的声明,这不是一个声明。一个 ”;”本身就是一个空洞的陈述。除了最简单的情况外,最好总是使用复合语句{...}。 – gnasher729 2014-06-20 09:45:27
@ gnasher729谢谢你让我知道这4年后;) – Jasarien 2014-06-26 13:13:08