首页 > 解决方案 > 如何使用带有函数作为参数的可变参数函数并将它们传递给指针

问题描述

我将函数传递给函数指针

void tact::setFunctions(void short_press_function(void), void release_press_function(void), void long_press_function(void))
{
    short_ptr = short_press_function;
    release_ptr = release_press_function;
    long_ptr = long_press_function;
}

但是这 3 个指针并不总是在我的程序中使用。我想使用可变参数函数来传递可变数量的函数,具体取决于我打开的功能。

    void tact::setFunctions(void args(), ...)

{

va_list ap;

va_start(ap, args);

#if SHORT_BUTTON_PRESS_CONFIG
    short_ptr = va_arg(ap, void (*)());
#endif
#if BUTTON_RELEASE_CONFIG   
    release_ptr = va_arg(ap, void (*)());
#endif
#if LONG_BUTTON_PRESS_CONFIG
    long_ptr = va_arg(ap, void (*)());
#endif

va_end(ap);

}

在这个新函数中,我没有正确理解如何使用 va_arg()。我基本上只是想将参数的地址传递给我的指针。如何?谢谢!

标签: c++functionpointersparametersvariadic-functions

解决方案


推荐阅读