我正在尝试创建一个宏(C/C++)来动态创建一个函数。基本上我有一个函数,其名称在“MyClassA”部分有所不同。争论也应该通过宏定义来传递。然后在函数中有一个可变的方法调用,例如“methodForClassA”,同样带有一组可变的参数。
void Java_somepackage_MyClassA_fixMethod(int arg1, int arg2) {
Toolbox.methodForClassA(arg1, arg2);
}
这种模式有 40 多个函数。当然,我可以手动或使用脚本创建它们。但是也可以用宏来做到这一点吗?例如这样的事情(不起作用):
# define MACRO_TEST(classname, methodname, args, argsMethod) void Java_somepackage_##classname_fixMethod(##args) {\
Toolbox.##methodname(##argsMethod);\
}
MACRO_TEST(MyClassA, methodForClassA, args1, args2)
经过一些实验和阅读文档后,我只能找到如何使用“(”跟随动态部分的模式创建“动态”函数名称:
#define FUNCTION(name, x) int func_##name() { return x;}
FUNCTION(test, 2);
问候,