宏使用取决于整数

pmr*_*pmr 1 c++ opengl macros

我必须在函数内多次使用宏,并且需要使用的宏取决于我传入函数的数字.

例如

  function(int number) { 
    switch(number) { 
       case 0: doStuff(MACRO0); break; 
       case 1: doStuff(MACRO1); break; 
    } 
  }
Run Code Online (Sandbox Code Playgroud)

问题是:每个switch语句都有很多东西要用同一个宏做.是否有更优雅的解决方案,然后在switch语句中包含所有内容?就像将宏本身传递给函数一样?我在C++中已经阅读了类似eval()的方法,但他们对我感觉不对.另一种方法可以确定宏扩展的内容,但我没有找到任何关于此的信息.

哦,实际上是openGL.

Joh*_*itb 8

我会使用一个函数对象

struct Method1 {
    void operator()() { ... }
};

template<typename Method>
void function(Method m) {
    ...
    m();
    ...
}

int main() {
    function(Method1());
}
Run Code Online (Sandbox Code Playgroud)