Skip to content

Commit

Permalink
CodingStyle: Relax restrictions on types of bit-fields.
Browse files Browse the repository at this point in the history
C99 only requires compilers to support four types for bit-fields: signed
int, unsigned int, int, and _Bool.  "int" should not be used because it
is implementation-defined whether it is signed.  In practice, we have found
that compilers (in particular, GCC, Clang, and MSVC 2013) support any
integer type.

Signed-off-by: Ben Pfaff <[email protected]>
Acked-by: Jarno Rajahalme <[email protected]>
  • Loading branch information
blp committed Aug 28, 2014
1 parent bd9d702 commit 8721a6e
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions CodingStyle
Original file line number Diff line number Diff line change
Expand Up @@ -428,12 +428,10 @@ prints 255 but printf("%u", -1) prints 4294967295.
network protocol fields or in other circumstances where the exact
format is important.

Declare bit-fields to be type "unsigned int" or "signed int". Do
*not* declare bit-fields of type "int": C89 allows these to be either
signed or unsigned according to the compiler's whim. (A 1-bit
bit-field of type "int" may have a range of -1...0!) Do not declare
bit-fields of type _Bool or enum or any other type, because these are
not portable.
Declare bit-fields to be signed or unsigned integer types or _Bool
(aka bool). Do *not* declare bit-fields of type "int": C99 allows
these to be either signed or unsigned according to the compiler's
whim. (A 1-bit bit-field of type "int" may have a range of -1...0!)

Try to order structure members such that they pack well on a system
with 2-byte "short", 4-byte "int", and 4- or 8-byte "long" and pointer
Expand Down

0 comments on commit 8721a6e

Please sign in to comment.