0

20個のモジュールに30K行のコードデータベースがあるとします。これは、それぞれの*.cppファイルと*.hファイル用です。開発プロセス中に、ソースコードはcerrを介して検索するローカル変数で装飾されました。gdbと同じように動作する利点がある場合もあれば、そうでない場合もあります。cerrストリームをクリーン/サイレントに保ち、希望するモジュールからcerrへの書き込みのみを取得できるようにしたいと考えています。どうすればよいですか:

1)cerrへの書き込みを区別します。これには、どのモジュールからの書き込みであるかに関する情報が含まれていますか?2)ビルドバイナリのcmd行オプションを追加します。これにより、cerrへの書き込みを許可するモジュール(私が見たいモジュール)を指定します。

4

1 に答える 1

1

編集: 実際、これを行う最善の方法は、ログ フレームワークを使用することです (Joachim Pileborg のコメントによると)。以下は、すでに持っているコードを絶対に保持する必要があるが、それをきちんとしたい場合にのみ実際に適用されます.

#ifdefこれを行う最善の方法は、ディレクティブを使用してビルドするコードを選択する、プリプロセッサを使用することです。

例えば

#ifdef CERR_DEBUG_BUILD_MODULE_1
cout << __FILE__ << ":" << __LINE__ << "\tCERR DEBUG OUTPUT" << endl;
#endif

そのステートメントは、小さなマクロでラップする方が良いかもしれません:

#ifdef CERR_DEBUG_BUILD_MODULE_1
#define LOG( x ) cerrLogPrint( x, __FILE__, __LINE__ )
#else
#define LOG( x )
#endif

どこ

void cerrLogPrint( const char* const log, const char* filename, unsigned int line)
{
     //PRINT
}
于 2012-06-18T11:31:51.350 に答える