问题
On this link I came across
http://lxr.linux.no/#linux+v2.6.36/include/linux/pci.h#L299
integer declaration
unsigned int is_added:1;
I have made C programs and declared integers in them but in the above I see use of
:
What sort of syntax is that?
回答1:
I think you have come across a bit-field :)
回答2:
It's part of a struct
, which means that it indicates that the field should only use a certain number of bits instead of an entire byte or more.
回答3:
This is bit field declaration in an array. The number post ":" denotes number of bits to allocate to this particular field of the structure.
Although you need to be careful with bit-fields as their binary representation is not portable. That is you are passing binary blobs between interfaces compiled with different compilers it may not work.
回答4:
This indicates that only one bit of this will be used.
回答5:
In struct
s, one can have integer variables that occupy any number of bits between 1 and 31. is_added
is such a one-bit variable. One-bit variables are also known as flags.
来源:https://stackoverflow.com/questions/4253509/how-to-declare-an-unsigned-int-in-a-c-program