nod*_*nja 6 c++ debugging function
我在程序中使用cout语句进行调试.我想创建一个像它一样工作的函数,或者像printf一样工作,但是对全局变量很敏感.如果此全局变量为true,则它将打印到屏幕.如果它是假的,那么它将不会打印任何东西.是否已经有这样的功能?如果没有,那怎么可以呢?
像这样的东西:
int myPrintf(const char* format, ...)
{
if (globalCheck == 0)
return 0
va_list vl;
va_start(vl, format);
auto ret = vprintf(format, vl);
va_end(vl);
return ret;
}
Run Code Online (Sandbox Code Playgroud)
va_start并va_end接受参数...并将它们封装在一个va_list.有了它,va_list你就可以根据这个需要设计vprintf一个变体printf.
旁注 - 通常使用全局变量是不好的做法.更好的办法是将它封装在这样的类中 -
class ConditionalPrinter {
public:
ConditionalPrinter() : m_enable(true) {}
void setOut(bool enable) { m_enable = enable; }
int myPrintf(const char* format, ...);
private:
bool m_enable;
}
Run Code Online (Sandbox Code Playgroud)
然后检查m_enable而不是全局变量.使用方法如下:
ConditionalPrinter p;
p.myPrintf("hello %d", 1); // printed
p.setOut(false);
p.myPrintf("hello2 %d", 1); // not printed
Run Code Online (Sandbox Code Playgroud)
....
| 归档时间: |
|
| 查看次数: |
5758 次 |
| 最近记录: |