I have the following struct:
struct holder {
int cause;
int agent:1, group:1, supervisor:1, defer:1;
};
Klocwork complains at the int agent:1 ... line saying: Bit field 'agent' has one bit and is signed. Signed one bit field, CWARN.SIGNEDBIT.
I don't understand why the integer being signed would make any difference. I realise that for a signed integer the leftmost (most significant) bit is used to determine whether integer is positive or negative but in case of bit fields that surely wouldn't matter???
Klocwork developer web site says:
Signed bitfields require at least two bits, and the two possible values of the field are -1 and 0. Although it is safe to check a 1-bit signed bitfield for 0, using it as a Boolean flag, other arithmetic operations may yield unexpected results.
Can someone please explain why integer must be unsigned in this case?