c++ - 将 va_list 传递给只接受变量参数的 #define (...)

标签 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", buffer); 将其传递给 DEBUG;

最佳答案

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

关于c++ - 将 va_list 传递给只接受变量参数的 #define (...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20528663/

相关文章:

c++ - Metal 防护设备地址模式

c++ - 具有增加的所有者线程优先级的同步原语

c - C 中的段错误(核心转储)?

c - 我在打字时遇到一些麻烦

f# - 如何创建带有 printf 样式日志参数的 F# 函数?

c++ - OpenCL 不明确上下文构造函数

c++ - Lambda 作为成员函数模板的默认参数

c - 如何在定义之前使用 `struct conn_queue`?

c - 如何从 C 中的字符串中获取和评估表达式

c++ - xprintf 不使用标准输出。它如何仍然打印在屏幕上?