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