Bit-fields of type other than int?
Why not use int
? The actual implementation of bitfields varies from compiler to compiler. If you want to write portable code, use int
. If you want to create a small structure, or a structure of a fixed number of bytes, or a structure where the bits are in a fixed position, don't use bitfields. Create a uint8_t
member called something like flags
and define macros to use as bitmasks.
1] Is there any problems/potential issues in using bit fields of type other than int? Why the warning?
Since bit-fields are low-level, there may be issues with portability if you are using non-standard types. Hence the warning -- note it is still a warning and not an error.
2] Are other than int type bit-fileds they allowed by C99 C language specification?
From the draft of C99:
6.7.2.1 Structure and union specifiers
4 A bit-field shall have a type that is a qualified or unqualified version of _Bool, signed int, unsigned int, or some other implementation-defined type.