我可以在Objective中声明变量吗?
我想我会失明,因为我无法弄清楚这段代码中的语法错误:
if( cell == nil ) {
titledCell = [ [ [ TitledCell alloc ] initWithFrame:CGRectZero
reuseIdentifier:CellIdentifier ] autorelease
];
switch( cellNumber ) {
case 1:
NSString *viewDataKey = @"Name";
etc...
当我尝试编译它时,在最后一行的'*'标记之前出现错误:语法错误。
对不起,这是一个基本的问题,但我错过了什么?
我手边没有合适的Objective-C编译器,但只要C构造是相同的:
switch { … }
为您提供了一个块级作用域,而不是每个case
。 在范围的开头以外的任何地方声明一个变量是非法的,并且在switch
内部是特别危险的,因为它的初始化可能会被跳过。
以下任一解决方案可以解决问题?
NSString *viewDataKey;
switch (cellNumber) {
case 1:
viewDataKey = @"Name";
…
}
switch (cellNumber) {
case 1: {
NSString *viewDataKey = @"Name";
…
}
…
}
您不能在case语句的开头声明一个变量。 制作一个测试用例,并且你会得到相同的错误。
它不需要在块中间声明变量 - 即使采用了一个标准,它不会让GCC在案例开始时接受声明。 看来GCC将案例标签看作是该行的一部分,因此不会在那里进行声明。
一个简单的解决方法就是在案例的开始处放一个分号,这样声明就不在开始。
在C中,只能在任何非声明语句之前的块的开头声明变量。
{
/* you can declare variables here */
/* block statements */
/* You can't declare variables here */
}
在C ++中,你可以在任何需要它们的地方声明变量。
链接地址: http://www.djcxy.com/p/14759.html