我正在寻找一种方法来调用相同的函数(使用不同的参数),而不知道函数名称。像这样:
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() { /*...*/ }
答案 0 :(得分:1)
我想出了这个令人讨厌的东西,但它有点有效。它可以使用不同的参数调用自身,但不能使用相同的名称(重载)来调用不同的函数。此外,它不支持默认参数。
#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);
}
答案 1 :(得分:1)
您可以使用预定义变量__func__
来获取当前函数的名称。这有帮助吗?