如何在 printf 上创建包装器
How to create a wrapper on printf?
我想写一个条件的printf,像这样
class ConditionalPrintf
{
public:
ConditionalPrintf(bool print)
: print_(print)
{}
void printf(int x, double y, char b, const char* format, ...) const
{
// use x, y and b
va_list argptr;
va_start(argptr, format);
if (print_)
printf(format, argptr);
va_end(argptr);
}
private:
bool print_;
};
但它打印垃圾。有什么问题吗?隐式这个参数可能会改变事情吗?
另外,如果这不是一个好主意,还有什么其他解决方案?我只是不想写if (print) printf(...)
十亿次。
>vprintf
将参数列表转发到printf
#include <stdio.h>
#include <stdarg.h>
class ConditionalPrintf
{
public:
ConditionalPrintf(bool print)
: print_(print)
{}
void printf(int x, double y, char b, const char* format, ...) const
{
// use x, y and b
va_list argptr;
va_start(argptr, format);
if (print_)
vprintf(format, argptr);
va_end(argptr);
}
private:
bool print_;
};
相关文章:
- 创建包装升压适配器的自定义范围类
- 如何为 v8::P ersistent<v8::Function> 创建到 c++ 函数的包装器
- 包装器是从 strcat_s() 到 strcat() 吗?如果没有,是否可以创建一个?
- 如何为要在 C# 中使用的静态库创建 C++ 或 C++/CLI 包装器
- 如何创建独立于平台的宏来包装编译器扩展?
- 在 C++ 中为 C 样式对象创建一个透明包装类
- 创建一个允许轻松创建虚拟函数包装器函数的C++宏
- 为 std::bind 创建模板包装器
- 在 boost::d eadline_timer 上创建包装器,无法将参数传递给处理程序函数
- 创建包装了可变类型的元组
- C++ - 错误:为 OpenCV 的 cv::标量::all 创建 C 包装器时出现预期的类型说明符
- 如何在Swig中为非基元数据类型创建包装器
- 通过围绕C++接口创建C包装器,在FORTRAN中调用C++dll文件
- 为库创建 C 包装器C++
- 为非托管程序集动态创建包装
- 为具有大量依赖关系的库创建包装器的正确方法
- 如何为不可创建类创建包装器
- 如何为 c++ 函数创建 c# 包装器
- 如何在 printf 上创建包装器
- 如何在vc++中为软件创建c#包装器