【发布时间】:2013-04-17 12:14:35
【问题描述】:
只是想让您对此有所了解,我记得读过 switch-case 语句中禁止属性声明(即不允许使用 case:ABC int i=0;)
今天早上我遇到了一件很奇怪的事情,
以下编译
switch(var1) {
case 1:
NSLog(@"hello");
float x = 0;
view.setCenter(CGPointMake(x,100));
break;
...
而以下不编译
switch(var1) {
case 1:
float x = 0;
view.setCenter(CGPointMake(x,100));
break;
...
因此,如果您使用语句(而不是声明)启动 case 表达式,它似乎可以编译。但是,当您尝试立即从变量声明开始时,它不会。
这背后的原理是什么?
编辑: 决定让我的问题更清楚,NSLog 有什么不同以便现在可以编译?
【问题讨论】:
-
你得到什么编译错误?
-
@Spectravideo328 你是对的,那里的答案比我的要好得多。
-
谢谢大家,谜团解决了 :) 所以这不是编译器错误,但根据定义,标签后面必须跟一个表达式,这很奇怪(我仍然没有看到任何好的理由应该是这样)
标签: c syntax compiler-errors case-statement