Objective c 为什么可以';我不能在开关块中创建一个变量吗?

Objective c 为什么可以';我不能在开关块中创建一个变量吗?,objective-c,Objective C,奇怪: switch(type) { case NSFetchedResultsChangeInsert: int x = 5; // error: "Expected expression before int" break; } 因此无法在开关盒块中创建局部变量?是否尝试添加大括号 switch(type) { case NSFetchedResultsChangeInsert: { int x =

奇怪:

switch(type) {
    case NSFetchedResultsChangeInsert:
        int x = 5; // error: "Expected expression before int"

        break;
}

因此无法在开关盒块中创建局部变量?

是否尝试添加大括号

switch(type) {
    case NSFetchedResultsChangeInsert:
        {
            int x = 5; // error: "Expected expression before int"

            break; 
        }
}

如果你把箱子做成一个实际的木块,它能起作用吗?类似于
案例foo:{intx=5;…}
?请记住,C语言中的
switch/case
只是围绕几个跳转目标的一个极薄的包装,其他什么都没有。这就是为什么达夫的设备如此巧妙。出于某种原因,你需要声明一个新的作用域。我的C不够好,无法知道。这是C标准的一个奇怪之处。有一些奇怪的语法边缘情况[我经常遇到]阻止编译器“正常工作”。