Я пытаюсь написать макрос, который получает информацию и отправляет эту информацию в другую функцию, разбивая оригинальный va_list на строку, а другой va_list порождается из исходного.
Ниже мой код.
Вызов макроса
/* Usage */
PRINT_LOG("Format log = %d, %f, %s", 1, 2.7, "Test");
Мой код ниже
/* my includes here */
#include <stdarg.h>
void printInfo(int level, const char *debugInfo, ...); /* defined in 3rd party API */
void formatLogs(int level, ...);
#define PRINT_LOG(...) formatLogs(0, __VA_ARGS__)
void formatLogs(int level, ...)
{
va_list args;
va_start(args, level);
/* get the first argument from va_list */
const char *debugString = va_arg(args, const char*);
/* here I want to get the rest of the variable args received from PRINT_LOG*/
va_list restOfArgs = ???????; /* restOfArgs should be 1, 2.7, "Test" */
/* Below I want to send the rest of the arguments */
printInfo(level, debugString, args);
va_end(args);
}
Можно ли отправить какую-то часть va_list как va_list другой функции ?? Если да, то как я могу это сделать?
Большое спасибо заранее.