我正在寻找一种方法来在不知道函数名称的情况下调用相同的函数(使用不同的参数)。像这样:
void my_func(int x)
{
//...
SELF(x-5);
//...
}
我需要使用上面的,因为我有一些复杂的宏。我为什么需要这个的一个例子:
#define start_func if(id == 0) return SELF();
int A(int id) { start_func /*...*/ }
int B(int id) { start_func /*...*/ }
int C(int id) { start_func /*...*/ }
int D(int id) { start_func /*...*/ }
int E(int id) { start_func /*...*/ }
int F(int id) { start_func /*...*/ }
int A() { /*...*/ }
int B() { /*...*/ }
int C() { /*...*/ }
int D() { /*...*/ }
int E() { /*...*/ }
int F() { /*...*/ }
最佳答案
我想到了这个讨厌的东西,但它有点管用。它可以使用不同的参数调用自身,但不能调用具有相同名称的不同函数(重载)。此外,它不支持默认参数。
#define BEGIN_FUNC(ret, name, ...) ret name(__VA_ARGS__) { ret(*SELF)(__VA_ARGS__) = name;
#define END_FUNC }
BEGIN_FUNC(int, factorial, int n)
return n == 0 ? 1 : n * SELF(n - 1);
END_FUNC
int main()
{
factorial(5);
}
关于c++ - 在不知道名称的情况下调用相同的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38274499/