c++ - How to instantly check the zero value of a structure without checking its each element? -
suppose have byte
structure, :
struct one_byte { char b1 : 1, b2 : 1, b3 : 1, b4 : 1, b5 : 1, b6 : 1, b7 : 1, b8 : 1; }foo;
in cases i'll need check (foo == 0)
, have 8 commands :
if(foo.b1 == 0 && foo.b2 == 0 && foo.b3 == 0 && ...and on
is there portable & convenient way can instantly check 0 value single command? tried functions & templates, perform slowly. , tried union, compiler doesn't back upwards bit[array]....
use union, intended for
union { struct { char b1:1,b2:1,b3:1,b4:1,b5:1,b6:1,b7:1,b8:1; } bits; unsigned char byte; } u;
then can either assign straight byte
u.byte = 15;
or bits individually
u.bits.b3 = 1;
exemple
int main() { u.byte = 0; printf("%x\n", u.byte); u.bits.b3 = 1; u.bits.b4 = 1; printf("%x\n", u.byte); homecoming 0; }
will output
0 c // 12 in decimal, since b3 , b4 set 1
c++ performance structure zero
No comments:
Post a Comment