我有一个 enum
和一个函数,它接受这个 enum 并使用 switch case
来调用正确的函数:
enum { FOO, BAR, ... } // 10-15 operations
void do_action() {
switch(enum) {
case FOO: fn_FOO(); break;
case BAR: fn_BAR(); break;
case default: fn_DEFAULT(); break;
}
}
我一直在尝试寻找一种方法来使用宏来自动生成上述 case 语句(以避免样板),但我是 C++ 的新手,谷歌并没有太大帮助。
我知道通过使用函数指针数组来避免某些样板 case 语句的替代方法,但我真的很想知道如何使用宏来完成此操作。
最佳答案
使用宏和标记粘贴应该相当简单,例如
#define do_action(e) fn_##e()
do_action(FOO); // -> fn_FOO();
do_action(BAR); // -> fn_BAR();
然而,这确实是 1980 年代针对 2014 年 C++ 问题的 C 解决方案,您几乎肯定应该重新考虑。
关于C++ - 用于根据枚举类型调用函数的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26784685/