From 8721a6e2f00fbaedaafa414cc74cf1ca66c177be Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Thu, 28 Aug 2014 08:50:13 -0700 Subject: CodingStyle: Relax restrictions on types of bit-fields. 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 Acked-by: Jarno Rajahalme --- CodingStyle | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'CodingStyle') diff --git a/CodingStyle b/CodingStyle index ce97258f5..c9b998922 100644 --- a/CodingStyle +++ b/CodingStyle @@ -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 -- cgit v1.2.1