C++ 模版可变参数列表传递给 C 的 va_list 可变参数列表
C 可变参数
以 printf 为例,常见如下
1 | |
CPP 可变参数
常见如下
1 | |
若此时需要为 C 的 printf 进行包装,使其可以接受 string 类型的 format,则可以用如下方式实现
1 | |
通常会提示警告,因为 c_str() 得到的字符串不能保证是一个可格式化的字符串,而 printf 的函数原型是
1 | |
这使得 printf 会被检查第一个参数是否满足 printf, scanf, strftime, 或者 strfmon 风格
但是通过此方法可以将部分 C 语言中的方法扩展到 CPP 的模版化
C++ 模版可变参数列表传递给 C 的 va_list 可变参数列表
https://blog.mauve.icu/2022/01/12/cpp/cpp-template-variable-parameter-to-c/