【发布时间】:2013-05-07 00:26:18
【问题描述】:
C++ 中的 switch 语句必须用常量编写的背后原因是什么?
我们来看看下面的代码:
switch(variable)
{
case 1:
case 2:
case 3:
case 4:
//Code 1
break;
case 5:
case 6:
case 7:
case 8:
//Code 2
break;
default:
//Code 3
break;
}
在其他语言中,例如 PAWN(C-Like 脚本语言),我可以这样写下这段代码:
switch(variable)
{
case 1 .. 4:
//Code 1
break;
case 5 .. 8:
//Code 2
break;
default:
//Code 3
break;
}
C++ switch 语句是从石器时代开始的,背后的原因是什么? (更不用说我们不能使用变量。)
即使在这些年来经历了如此多的变化和更新......
【问题讨论】:
-
运行时很难创建跳转表?范围的事情是一种单独的交易。或许如果该语法曾经出现过(我个人觉得它有点好;它也在 D 中),那么不久之后将其添加到开关的提议不会太久,但它可能需要一些额外的工作才能保持一致
switch语法。 -
PAWN 语法与强制常量有什么关系?
1 .. 4不是常数吗? (另外,制作一个宏SEQ(1, 4)) -
@Pubby,有趣的想法。我不太喜欢预处理器黑魔法,但
BOOST_PP_FOR可以做到吗? -
这是语言的定义方式。
-
@NemanjaTrifunovic:这个问题是关于另一个问题的。
标签: c++ c++11 switch-statement