私は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などに関連するバッファーをクリアする方法があるかどうか知りたいです。この種の関数を正しく機能させることは可能ですか?