//マクロを使ったデバッグプリント管理
/*
プログラムの動作を確認するのにprintを使うと思います。
でも、リリースプログラムにprintを残したくない。
しかし、手動でprint文を消して回るのは面倒だと言うときに
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*
デバッグ出力するか否かを決めるコンパイルスイッチ
ファイルが複数であれば、全体でインクルードするヘッダに置くなどする。
*/
#define _ENABLE_DEBUG_PRINT
typedef enum _DebugMessage{
DEBUG_MESSAGE_NO_PROBLEM
,DEBUG_MESSAGE_ERROR
}DebugMessage;
#ifdef _ENABLE_DEBUG_PRINT
void printDebugMessage( DebugMessage message )
{
/*
出力文字列のメンテのために、ファイルをあちこち探し回るのが嫌なので
文字列を保持する箇所をまとめてあります。
呼び出し元を探すときは、DebugMessage型の列挙型で検索します。
小さなファイルであれば、こんな面倒なことしなくても良いかと思います。
*/
switch(message)
{
case DEBUG_MESSAGE_NO_PROBLEM:
printf( "No Problem.\n" );
break;
case DEBUG_MESSAGE_ERROR:
printf( "Error happned.\n" );
break;
default:
printf( "Case not defined.\n" );
break;
}
}
#else /* _ENABLE_DEBUG_PRINT */
/*
_ENABLE_DEBUG_PRINTが定義されていないとき、この空マクロで置き換えられる。
printDebugMessage関数の未定義で怒られることもなければ、
デバッグメッセージ関数を消さなくてもメッセージを出力しないようにもなる。
*/
#define printDebugMessage( mes )
#endif /* _ENABLE_DEBUG_PRINT */
int main( void )
{
unsigned int value;
srand( (unsigned)time( NULL ) );
value = rand();
if( (value%2) != 0 ){//あんまりエラーが出ないので確率を1/3にする
printDebugMessage( DEBUG_MESSAGE_NO_PROBLEM );
}else{
//0除算とかやると困るので
printDebugMessage( DEBUG_MESSAGE_ERROR );
}
printf( "value : %d\n", value%2 );
}
最終更新:2011年08月02日 00:46