将va_list传递给#define,它只接受变量args(...)

时间:2013-12-11 19:54:05

标签: c++ c printf variadic-functions

我有一个只接受变量args而不是va_list的预处理器定义。

#define DEBUG(fmt, args...)                                         \
    do {                                                            \
            debug_printk(CORE, NAME,              \
                                    __func__, fmt, ##args);         \
    } while (0)

void write(const char* fmt, ...)
{
     va_list args;
     va_start(args, fmt);
     print_debug(fmt, &args);
     va_end(args);

}

void print_debug(const char* fmt, va_list* args)
{
     DEBUG(fmt, *args);
} 

有没有办法将va_list arg变量传递给它?我无法更改此定义,并且似乎没有VDEBUG替代方案。

我有什么选择?

由于

编辑:

我想最好的方法是使用vsnprintf获取字符串,然后使用DEBUG(“%s”,缓冲区)将其传递给DEBUG;

1 个答案:

答案 0 :(得分:0)

我想最好的方法是使用vsnprintf获取字符串,然后使用DEBUG(“%s”,缓冲区)将其传递给DEBUG;