【发布时间】:2010-11-25 14:34:44
【问题描述】:
好吧,这实际上不是一个问题..
我只是偶尔发现有一种有趣的方法可以在 switch/case 块中声明局部变量。你可以这样写,而不是在每个 case 块中使用大括号:
switch (action) {
int res;
int value;
case ACTION_OPEN:
res = open(...);
...
break;
case ...
}
所以,我只是想知道除了 gcc 之外还有哪些 C/C++ 编译器支持这种构造?它看起来像一个常见的跌倒。欢迎任何有关此结构的 cmets!
【问题讨论】:
-
+1,只是为了确定这是合法的 C++ 还是编译器的意外。如果允许的话可能会有用。
-
一种更简单的方法是停止使用已经过时 11 年以上的 C 编译器。
-
不过,除了偶尔的失败之外,我仍然更喜欢每个 case 块中的大括号,以实现更多的本地范围。这是一个品味问题。
-
我将标签更改为 C,因为问题指定了 C,并且构造在 C++ 中完全完全不相关。
-
@DeadMG 为什么它在 C++ 中比在 C 中“完全和完全不相关”?标签是由原始海报设置的,所以我怀疑删除它是一件好事。 C++ 对此有附加规则(
res和value不能被初始化并且不能是非 POD)。
标签: c++ c variables local switch-statement