gcc 4.7.2
c89
こんにちは、
enum message_e {
SIP_CONNECTED = 1 << 0,
CALL_ACCEPTED = 1 << 1
};
コードのさまざまな部分でビットを設定します。
channel->base.message |= CALL_ACCEPTED;
channel->base.message |= SIP_CONNECTED;
後で、両方のビットが設定されていることを確認したいと思います。
if((channel->base.message & SIP_CONNECTED) && (channel->base.message & CALL_ACCEPTED)) {
/* IF BOTH BITS ARE SET CALL_ACCEPTED and SIP_CONNECTED */
}
これらのビットのみが設定されている場合にのみ、if ステートメントを通過したいと考えています。CALL_ACCEPTED が設定され、SIP_CONNECTED が設定されていない場合、およびその逆の場合。
ただし、どちらか一方だけを設定すると if 文に陥ってしまうようです。
ご提案いただきありがとうございます。