Переслать вызов функции с переменным числом аргументов в C

Не напрямую, однако обычно variadic (и вы почти всегда найдете variadic случай в стандартной библиотеке), когда variadic вариативные функции идут c в паре с альтернативной функцией variadic в стиле varargs. например printf/vprintf

Функции variadic v... принимают параметр va_list, реализация variadic которого часто выполняется c с помощью специфичной для variadic компилятора «макромагии», но c вам гарантировано, что вызов variadic функции стиля v... из такой variadic функции с переменным числом variadic аргументов будет работать:

#include 

int m_printf(char *fmt, ...)
{
    int ret;

    /* Declare a va_list type variable */
    va_list myargs;

    /* Initialise the va_list variable with the ... after fmt */

    va_start(myargs, fmt);

    /* Forward the '...' to vprintf */
    ret = vprintf(fmt, myargs);

    /* Clean up the va_list */
    va_end(myargs);

    return ret;
}

Это variadic должно дать вам эффект, который c вы ищете.

Если вы планируете variadic написать библиотечную функцию c с переменным числом аргументов, вам variadic также следует подумать о c том, чтобы сделать компаньон variadic в стиле va_list доступным c как часть библиотеки. Как c видно из вашего вопроса, он c может оказаться полезным variadic для ваших пользователей.

c

variadic

2022-10-26T17:56:43+00:00
Вопросы с похожей тематикой, как у вопроса:

Переслать вызов функции с переменным числом аргументов в C