[wine-zh] Re: [wine-zh] Re: [wine-zh] case 语法

  • From: YongHao Hu <christopherwuy@xxxxxxxxx>
  • To: wine-zh@xxxxxxxxxxxxx
  • Date: Sun, 27 Mar 2016 21:05:46 +0800

不好意思, 挖坟了. 不过我最近再学习了一些关于switch的知识, 发现这个说法不 大正确.

On 14/4/27 上午10:42, Yeechan Lu wrote:


花括号其实是为了定义变量……
加上了花括号的话,里面的变量只在这个花括号里有用。

case 1:{int a;break;}
case 2:{int a;break;}

否则就得

case 1:int a;break;
case 2:int b;break;

值得注意的是,C85 里是不允许在任意地方定义变量的,必须放在一个复合语句 的起始部分。

只有语句前面才才能带标号, 声明前面不能带标号, 所以
case 1:int a;break;
case 2:int b;break;
是错的
error: expected expression int a;
但是case 1:{int a;break;}是对的
 case 1:     ;     int a;break; 也是对的.



On Apr 27, 2014 9:15 AM, "Shuai Meng" <mengshuaicalendr@xxxxxxxxx <mailto:mengshuaicalendr@xxxxxxxxx>> wrote:

    请教一下大家,如果case和对应的break之间有多个语句,需要用花括号吗?
    比如这个:
    1243             case VT_EMPTY:
    1244                 V_VT(res) = VT_I1;
    1245                 V_I1(res) = 0;
    1246                 break;

    编译是通过的。
    但是这个:
    1250             case VT_I4: {
    1251                 HRESULT hres;
    1252                 int tmp;
    1253
    1254                 hres = to_int(arg, &tmp);
    1255                 if (FAILED(hres))
    1256                     return hres;
    1257                 V_VT(res) = VT_I4;
    1258                 V_I4(res) = tmp >= 0 ? tmp : -tmp;
    1259                 break;
    1260             }

    就不好说了。


Other related posts: