我有一个预处理器定义,它只接受变量 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", buffer); 将其传递给 DEBUG;
最佳答案
我想最好的方法是使用 vsnprintf 获取字符串,然后使用 DEBUG("%s", buffer); 将其传递给 DEBUG;
关于c++ - 将 va_list 传递给只接受变量参数的 #define (...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20528663/