« マルチタスクってよく聞く? | トップページ | 教える事は難しい…。 »

2005年12月 8日 (木)

ONとOFFを繰りかえすフラグ

失敗した…。

ONとOFFを繰りかえすフラグの
処理としてこんなのを作ったが…。

BOOL    Flag    = FALSE;
void FlagChange( void )
{
    Flag    ^= TRUE;
}

基本的にこれでOKなのだが…
今回、たまたま

    Flag    = -1;

など、入れた奴がいたので
上記の処理が機能しなくなってしまった…。

多分よりベターな方法は
これだ!…と思う…。

void FlagChange( void )
{
    Flag    = !Flag;
}

しかし!

    Flag    = -1;

をやった奴は、もちろんバグなので
潰しておかなくてはならない!

念のためセーフティをつけるのなら
こんな感じ?

void FlagChange( void )
{
#ifdef _DEBUG
    if( ( unsigned )Flag > TRUE )
        MessageBox( GetActiveWindow( ), "FLAG VALUE ERROR!", "ERROR", MB_OK );
#endif

    Flag    = !Flag;
}

「BOOL」は、結局「int」なので
「unsigned」キャストで負の数を無くしておいて
チェックすると
    if( ( Flag < 0 ) || ( 1 < Flag ) )
と書かなくて済むし、比較も一回で済むし…。

ちょっと幸せになれるかも…。

|

« マルチタスクってよく聞く? | トップページ | 教える事は難しい…。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: ONとOFFを繰りかえすフラグ:

« マルチタスクってよく聞く? | トップページ | 教える事は難しい…。 »