这会是法律法规还是违反任何规则?
switch (expr)
{
do
{
case 6:
/*...*/
if (/*...*/)
break;
case 7:
/*...*/
} while (0);
case 9:
/*...*/
break;
default:
break;
}
这是否是执行案例 6 后执行案例 7 的合法方式,但前提是满足某些条件?或者这会导致不确定的行为并让鼻龙摆脱开关?ps我的问题是指c99。
编辑:
我想要做的是:假设,案例9,必须在每个案例中执行。如果 expr 是 6,我必须执行 6,在某些条件下是 7,然后是 9,或者如果 expr 是 7,它的 7->9 所以如果满足某些条件,我只想跳过 7,但我不能更改 6 的顺序,7,9。
编辑2:
我不是在寻找替代解决方案,我只是对这个片段的行为感兴趣。
如果 switch 语句在具有可变修改类型的标识符范围内具有关联的 case 或默认标签,则整个 switch 语句应在该标识符的范围内。
来自 ISO/IEC 9899:TC3 6.8.4.2->3
让我不确定它的行为。但我不确定它是否也会像我的代码片段一样瞄准代码。