c++ - 如何避免写 switch-case 太长?

标签 c++

在我目前的项目中,有很多代码使用 case 过多的 switch 语句。

Switch(c)
{
case CASENUMBERONE:
//50-100 lines of code in each code
...
case CASENUMBERTWENTY:
..
}


//thousands of lines of macro definition in another file
#define CASENUMBERONE 1
...
#define CASENUMBERTWENTY 20
...

编程风格似乎不太合理。 如何避免这种情况?

最佳答案

视情况而定。

  • 您可以为每种情况编写一个函数。如果您担心性能,可以将它们内联,但在现实生活中,由于更好的指令缓存一致性,您实际上可能最终会通过使用单独的函数来提高性能。

  • 如果所有可能的整数值都在附近并且非常密集,您可以创建一个跳转表。如果满足某些条件,这就是许多编译器在内部对 switch/case 所做的事情。跳转表是一个函数指针数组,整数是其中的一个索引。显然,您需要进行边界检查和 NULL 检查。

  • 您可以重新设计代码以使用多态性并改为调用虚函数。

关于c++ - 如何避免写 switch-case 太长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4012162/

相关文章:

c++ - 使用模板的条件函数调用

C++ sqlite3如何知道一条sql语句执行成功?

c++ - 找不到程序入口点?

c++ - 如何静态链接.DLL?

c++ - Qt 线程计算输出到 GUI 中的自己的小部件?

c++ - 意外的重定位类型 0x03

c++ - 链接器错误 - 未解析的外部符号

c++ - 信号/暂停死锁

c++ - 二叉搜索树析构函数

尝试通过内存中的地址调用函数时 C++ 程序崩溃(如何修复?)