c++ - 通过宏展开调用方法

标签 c++ c++11 c++14

我有这个代码:

class A {
public:
  bool has_foo() { return true; }
};

int main() {
  A a;

  CALL(a, foo);
}

我想通过宏扩展调用方法has_foo:

#define CALL(object, method) do { object.has_ ## method ## (); } while(0)

上面的代码在 MSVC 上编译,但在 GCC 上失败。

我想使用宏扩展以避免运行时开销。

最佳答案

试试

#define CALL(object, method) do { object.has_##method(); } while(0)

关于c++ - 通过宏展开调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444414/

相关文章:

C++11 嵌套 lambda 编译段错误

c++ - 如何在不复制的情况下将一个 vector move 到另一个 vector

C++ 我将如何使用 sort 对这个二维数组进行排序?

c++ - 具有自定义散列/相等函数的 unordered_map - 函数不会被调用

c++ - ref 限定符在 gcc4.7.2 和 vc10 中给出错误

c++ - lambda 的生命周期在 const lambda 中捕获引用

c++ - '.size' 的左边必须有类/结构/union

c++ - RAII与std::function

c++ - 带有 constexpr 的编译时命名参数习语

c++ - 无法从通用引用中捕获 lambda 中的引用?