◀ANSI版開発トップへ
  • 1334 ブール値の扱い
    • 1335 Re: ブール値の扱い
      • 1351 Re2: ブール値の扱い
        • 1373 Re3: ブール値の扱い
        • 1379 今回の警告回避
  • [1334] ブール値の扱い やざき 2002年01月26日 12:24

    warning C4800: 'int' : ブール値を 'true' または 'false' に強制的に設定します (警告の処理)

    が出ています。すなわち、ブール値をboolにするかBOOL(int)にするかってことだと思うのですが、
    どちらかに統一しておかないと、無用な警告が出て、必要な警告を見逃してしまいそうです。

    今すぐ全ソースを見直すかどうかは置いといて、方針だけでも決められたらと思います。

    わたしはどちらでもかまわないのですが、なんとなくBOOL(int)を使っています。
    どうでしょう?
    • [1335] Re: ブール値の扱い げんた 2002年01月26日 12:55

      ▼やざき
      >どちらかに統一しておかないと、無用な警告が出て、必要な警告を見逃してしまいそうです。
      >わたしはどちらでもかまわないのですが、なんとなくBOOL(int)を使っています。
      私はboolという型がせっかく用意されているのだから,そちらを使った方がいいように思います.

      例えば if( bFlag ) と書いたとき bFlag がBOOL型なら この時点で BOOL (実はint) -> boolに型変換されると考えられますし.

      実装に影響の出る違いは BOOL=intは4byte消費するけど boolは1バイト消費という点でしょう.
      • [1351] Re2: ブール値の扱い あろか 2002年01月27日 01:38

        ▼ げんたさん
        > ▼やざき
        > >どちらかに統一しておかないと、無用な警告が出て、必要な警告を見逃してしまいそうです。
        > >わたしはどちらでもかまわないのですが、なんとなくBOOL(int)を使っています。
        > 私はboolという型がせっかく用意されているのだから,そちらを使った方がいいように思います.
        >
        > 例えば if( bFlag ) と書いたとき bFlag がBOOL型なら この時点で BOOL (実はint) -> boolに型変換されると考えられますし.
        >
        > 実装に影響の出る違いは BOOL=intは4byte消費するけど boolは1バイト消費という点でしょう.
        警告がでるのは戻り値がBOOLなのにboolで受けているとかそういうときではないでしょうか。
        わたしはboolが多いです。
        けどWindowsのAPIの引数、戻り値ならBOOLを使うべきと思います。

        boolのサイズは(その他も)処理系依存です。
        ので設定をバイナリで入出力するときはBOOLやUINT、DWORDなどにしないといやですね。

        • [1373] Re3: ブール値の扱い げんた 2002年01月27日 15:48

          ▼あろかさん
          >WindowsのAPIの引数、戻り値ならBOOLを使うべきと思います。
          >設定をバイナリで入出力するときはBOOLやUINT、DWORDなどにしないといやですね。
          上のことは一応了解しています.

          私はBOOLとboolは異なることを一応考慮してはいますが,抜けがあったらごめんなさい.
          相互の変換時には
          ( BOOL != TRUE ) → bool
          bool ? TRUE : FALSE → BOOL
          としています.

          * BOOL == TRUEじゃなくて BOOL != FALSEというのは TRUE/FALSE以外が入っていたときの保険
        • [1379] 今回の警告回避 げんた 2002年01月28日 10:02

          >警告がでるのは戻り値がBOOLなのにboolで受けているとかそういうときではないでしょうか。

          問題の箇所は私が作ったSetModified(bool,bool)だけなので,
          SetModified(bool,BOOL)とSetModified(BOOL,bool)というのを作って回避しました.

          引数の型に応じて3つのうちのどれかが使われます.後ろの2つは型変換してSetModified(bool,bool)を呼ぶだけのもの.

          これはバグフィックス扱いで次回リリースに含めたいと思います.