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
コメント