c++ - C预处理器中的功能绑定(bind)操作

标签 c++ c bind c-preprocessor

我有一个这样的宏(它来自一个实际有用的用例,但我一直在玩简化的用例):

#define MY_MACRO(M)  M(3) M(5) M(7)
#define MULTIPLY_BY_2(A)  (2*A)

然后我可以写

MY_MACRO(MULTIPLY_BY_2)
// -> (2*3) (2*5) (2*7)

太棒了!我想要的是:

#define MULTIPLY(A,B) (A*B)
MY_MACRO(BIND(MULTIPLY, 2))

得到和上面一样的结果。 BIND 可能是什么?我已经尝试了一些 hack,并且可以报告说这几乎是可能的(我觉得这很神奇)。但它并不漂亮,也不一般。这能做得吗? (即纯粹在CPP中构建一些真正的功能设施?)是否可以做得足够好以绑定(bind)绑定(bind)宏?

也许我真正想问的是,在您所知道的任何预处理器库中是否有这样的工具?我在 Boost 中找不到类似的东西。

最佳答案

对不起,你不能要求宏编程很漂亮。

关于c++ - C预处理器中的功能绑定(bind)操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10254567/

相关文章:

C++:绑定(bind)到基类

c++ - 将 C++ 对象(尤其是 STL 容器)移动到特定的内存位置

c++ - Boyer-Moore 多数投票算法的二次通过要求

c - 开放系统调用-Linux

c++ - 带参数的类的 pthread 成员函数

javascript - 绑定(bind)函数不返回对象的引用

c++ - 安卓C++编程

c++ - Armadillo + OpenBLAS 多线程

c++ - 如何确定机器上的硬件(CPU 和 RAM)?

c - 文件描述符消失/无效