![]() ![]() ![]()
|
SophiaFramework 2.0 |
SophiaFramework ではブール型を Bool により表現します。
typedef unsigned char Bool; typedef Bool& BoolRef; typedef Bool* BoolPtr; typedef Bool** BoolHandle; typedef const Bool ConstBool; typedef const Bool& ConstBoolRef; typedef const Bool* ConstBoolPtr; typedef const Bool** ConstBoolHandle; #define TRUE 1 #define FALSE 0 #define ON 1 #define OFF 0
Bool 値を返す関数は、真を表すのに必ずしも TRUE=1 を返すわけではありません。 C 言語の慣例に従い 0 以外の値は真として扱われますので、 Bool 値を比較するときは TRUE との比較はしないでください。
if (IsDigitChar(ch) == TRUE) { ... } // よくない例
if (IsDigitChar(ch)) { ... } // 正しい例
また、C 言語の慣例ではブール値は int 型で表現しますが、 フレームワークの Bool 型は実際には unsigned char 型であることにも注意してください。 このことが重要になるのは次のようなコードを書くときです。
Bool MyFunction(SIntN flag) {
return (flag & 0x4000); // よくない例
}
上記の例ではブール値を返しているつもりですが、 Bool 型が実際には unsigned char であるため、 常に 0 (FALSE) が返されることになり、正しい実装ではありません。 次のように必ず論理値として返すような実装を心がけてください。
Bool MyFunction(int flag) {
return (flag & 0x4000 != 0); // 正しい例
}
// または
Bool MyFunction(int flag) {
return !!(flag & 0x4000); // 正しい例
}
| Copyright(C) 2003 Sophia Cradle Inc., All Rights Reserved. |
![]() ![]() ![]()
|