как использовать функции variadi c с функциями в качестве аргументов и передавать их указателям - PullRequest
0 голосов
/ 20 февраля 2020

Я передаю функции указателям на функции

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 указателя не всегда будут использоваться в моих программах. Я хочу использовать функцию variadi c, чтобы передавать переменное число функций в зависимости от того, какие функции я включил.

    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 (). Я просто хочу передать адрес моих аргументов моим указателям. Как? Спасибо!

...