C言語のデバッグ用printfです。
表示と同時に、同じ内容をファイルにも出力しますので、表示内容が多い場合に役立ちます。
また、デバッグが完了して不要になったら、デバッグ用ルーチンの呼び出し自体を簡単に無効化できるので、成果物にデバッグ用の無駄なコード混入もありません。
まず、コードに以下を追加します。
: #include <stdarg.h> : #define DPRINT dprint : void dprint( char *format , ... ){ static FILE *fp = NULL; static bool init = 0; char buf[1024]; va_list ap; if( init == 0 ){ fopen_s( &fp , "debug.log" , "a" ); init = 1; } va_start( ap , format ); vsprintf_s( buf , 1024 , format , ap ); printf( buf ); if( NULL != fp ){ fprintf( fp , buf ); } va_end(ap); return; }
その後、printf と同じように、DPRINT()を使用します。
書式文字列は、printf と同じものが使えます。
DPRINT( "%d + %d = %d\n" , 1 , 2 , 1+2 ); DPRINT( "%lf + %lf = %lf\n" , 0.1 , 0.7 , 0.1+0.7 ); DPRINT( "%s\n" , "Hello!" );
画面表示とともに、同じ内容が debug.log にも出力されます。
デバッグが完了して、表示/ファイル出力が不要になったら、以下のようにするだけで、デバッグ用ルーチンの呼び出し自体を無効化します。
#define DPRINT
コメント