【发布时间】:2014-05-05 17:48:08
【问题描述】:
是否有任何解决方案来运行名称由两个字符串连接创建的函数/宏?
我只是想做这样的事情:
template <char *A, char *B, int C>
int function_that_run_other_function(void){
// Here is the main point
char function_name[80];
strcpy (function_name, "function");
strcat (function_name, A);
strcat (function_name, B);
return function_name(C);
}
我可以使用宏来做到这一点:
#define macro_that_run_function(A,B,C) \
function_##A##B##(C);
但我不想使用宏,因为宏有很多问题。 是否可以在没有任何额外库的情况下在 C++ 中完成?
【问题讨论】:
-
没有。使用宏。您对宏有什么特殊问题吗?
-
在windows下你可以导出函数,然后使用getProcAddress获取函数指针来调用这个名字。大概在linux下也是可以的。
-
你能发布预期的用例吗?由于您似乎已经静态地知道信息,所以应该有另一种方式。
-
在我看来,调试宏不像 c++ 函数那么容易。这就是为什么我想在没有宏的情况下制作它。
-
@marcin_j '在 linux 下可能也是这样。' 当然是 ;) ...
标签: c++ reflection macros metaprogramming