Search code examples
c++cprogramming-languagesannotations

what does this mean in c int a:16;?


Possible Duplicate:
What does 'unsigned temp:3' mean?

please what does this notation mean

int a:16;

I found it is code like this and it does compile.

struct name { int a:16; }


Solution

  • This is a bitfield.

    This particular bitfield doesn't make much sense as you just could use a 16-bit type and you're wasting some space as the bitfield is padded to the size of int.

    Usually, you are using it for structures that contain elements of bit size:

    struct {
        unsigned nibble1 : 4;
        unsigned nibble2 : 4;
    }