[ovs-dev] [PATCH] CodingStyle: Relax restrictions on types of bit-fields.

Ben Pfaff blp at nicira.com
Wed Aug 27 16:31:20 UTC 2014


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 <blp at nicira.com>
---
 CodingStyle | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/CodingStyle b/CodingStyle
index ce97258..c9b9989 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
-- 
1.9.1




More information about the dev mailing list