|
11
|
| Johannes Schaub - litb · 技术社区 · 15 年前 |
|
|
1
2
如果编译器是MSVC,则可以使用
|
|
|
2
3
至少在我看过的编译器中,答案通常是否定的。大多数编译器都会编译这样的switch语句来编写大致相当于:
|
|
|
3
2
如果您使用的是“默认”(ha!)
|
|
4
1
我只看到一个解决方案,以防优化实际受到干扰:臭名昭著的“ifndef-NDEBUG”绕过默认情况。不是最好的把戏,但在这种情况下是清楚的。 顺便问一句:你已经看过你的编译器在默认情况下做了什么吗? |
|
|
5
1
如果你有一个永远不应该到达的状态,那么你应该终止这个程序,因为它刚刚到达了一个意外的状态,即使是在发布模式下(你可能只是更老练一些,实际上是保存用户数据,在崩溃之前做所有其他好的事情)。 并且请不要沉迷于微观优化,除非您已经实际测量(使用剖析器)您需要它们。 |
|
6
1
处理此问题的最佳方法是不禁用断言。这样你也可以留意可能的虫子。有时,应用程序最好在崩溃时显示一条很好的消息,解释到底发生了什么,然后继续工作。 |
|
|
7
0
使用编译器扩展:
-
|
|
|
Bunyamin Erkaya · 使用开关输入后立即断开,或者如果 2 年前 |
|
|
Ettapp · switch语句中的类型保护类 2 年前 |
|
|
user23760512 · 所欠所得税的计算不正确 2 年前 |
|
|
Johnml · 将if-else语句转换为Switch语句 2 年前 |
|
Piotr Siupa · 如何在switch语句中使用太空船操作员 2 年前 |
|
|
Sybe · 将输入转换为数字的方法不起作用[重复] 2 年前 |