コンパイラの警告 (レベル 1) C4807
'operation': 'type' 型と 'type' 型の符号付きビットフィールドの混用は安全ではありません。
この警告は、1 ビットの符号付きビットフィールドと bool
変数を比較すると、生成されます。 1 ビットの符号付きビットフィールドには、値 -1 または 0 のみを含めることがでるため、 bool
と比較するのは危険です。 bool
と 1 ビットの符号なしビットフィールドは bool
を同じであり、0 または 1 のみを保持できるため、これらを混用しても警告は生成されません。
例
次の例では C4807 が生成されます。
// C4807.cpp
// compile with: /W1
typedef struct bitfield {
signed mybit : 1;
} mybitfield;
int main() {
mybitfield bf;
bool b = true;
// try..
// int b = true;
bf.mybit = -1;
if (b == bf.mybit) { // C4807
b = false;
}
}
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示