Переслать вызов функции с переменным числом аргументов в 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
Переслать вызов функции с переменным числом аргументов в C
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.