我想到了 C++ 中的一个小型调试内联函数:
void inline debug( int debug_level, ostream& out ) {
if ( debug_level <= verbosity ) {
out.flush();
}
else {
ostream tmp;
tmp << out;
}
}
这是我想如何使用它的一个例子:
_debug( 7, cout << "Something something" << someint << endl );
但是它不能按我计划的方式工作 - 我希望它仅在详细级别高于或等于传递给函数的调试级别时打印消息,但似乎它每次都会打印,无论调试级别如何,所以数据会保留在 cout 缓冲区中。到目前为止,我认为这个函数不是我最近想到的最好的主意,但我仍然想知道是否有办法清除与 cout、cerr 等相关的缓冲区。是否有可能让这种函数正常工作?