我具有以下原型的功能:
void func(int an, ...);
我想存储此函数的地址,以后再调用它。我真的不知道该怎么做,我拼命尝试:
void (*funcPtr)(int, ...); // Declaration
funcPtr = func; // Storage
(*funcPtr)(3,2,5); // Call
这段代码可以很好地编译,但是在执行时确实会出错,当我输入函数时,我的参数va_list
不是我发送的参数。
提前致谢
编辑:好的,我只是忘记了第一个论点。在上面的代码中,呼叫行应替换为:
(*funcPtr)(3,3,2,5); // Call
函数自然是指针。因此,您可以简单地致电:
funcPtr(3,3,2,5);
看来您一切正常。如果函数没有可变参数,则使用参数的正确“形状”声明函数指针是一个非常好的主意,以防止传递格式错误的参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句