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 ) )
と書かなくて済むし、比較も一回で済むし…。
ちょっと幸せになれるかも…。
| 固定リンク
コメント