c++ - 取决于整数的宏使用

标签 c++ opengl macros

我必须在函数内多次使用宏,需要使用的宏取决于我传递给函数的数字。

例如

  function(int number) { 
    switch(number) { 
       case 0: doStuff(MACRO0); break; 
       case 1: doStuff(MACRO1); break; 
    } 
  }

问题是:对于同一个宏的每个 switch 语句,我有很多事情要做。 有没有比在 switch 语句中包含所有这些东西更优雅的解决方案?就像将宏本身传递给函数一样?我读过有关 eval() 的 C++ 方法,但我觉得它们不合适。另一种方法是确定宏扩展的内容,但我还没有找到这方面的任何信息。

哦,其实是 openGL。

最佳答案

我会使用函数对象

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

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

int main() {
    function(Method1());
}

关于c++ - 取决于整数的宏使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/933020/

上一篇:C++ 类实例

下一篇:c++ - 5维数组哈希表

相关文章:

automation - 最好的AutoHotKey宏?

c++ - 如何 tuple<Ts...>& base = t;在元组实现中工作

c++ - 使用 vector 对堆栈进行排序

c++ - 在 C++ OpenGL 中使用顶点缓冲区对象

java - 如何在 LibGDX 中正确旋转和移动 3D 透视相机

java - glDrawElements 上的 GL_INVALID_ENUM

c++ - 通过define从纯文本中获取字符串

macros - 无法更新 CMake 宏内的变量

c++ - Qt QGroupBox边框

c++ - 非常非常基本 : Why won't my makefile work