..
感謝事前..ですこの使用の#defineや何かをする巧妙な方法があると思うし、単一のデバッグフラグ。デバッグ関数はprintfまたはcoutを呼び出す前にこのフラグをチェックします。その後、残りのコードでは、単にデバッグ関数/メソッドを呼び出します。ここで
は例です:もちろんの
class MyDebugger
{
private:
bool m_debug;
public:
MyDebugger();
void setDebug(bool debug);
void debug(const char* message);
};
MyDebugger::MyDebugger()
{
m_debug = false;
}
void MyDebugger::setDebug(bool debug)
{
m_debug = debug;
}
void MyDebugger::debug(const char* message)
{
if(m_debug)
{
cout << message << endl;
}
}
int main(int argc, char** argv)
{
MyDebugger debugger;
debugger.debug("This won't be shown");
debugger.setDebug(true);
debugger.debug("But this will");
return 0;
}
これは非常に単純な実装です。実際のロガークラスでは、メッセージの重要度を区別するための詳細(メッセージのレベル(エラー、警告、情報、デバッグなど)のレベルを細かく制御するための多くのレベルがあります。また、stdoutだけでなくファイルにもログすることができます。それでも、これはあなたに一般的な考えを与えるはずです。 GCCで
エラーレベルのログフレームワークが必要です。 – Armando
特定のコンパイラ/プラットフォームですか? –