Santoso Wijaya <santoso.wij...@gmail.com> added the comment: What compilers were used to build your Python distro and the native structure?
I found out in _ctypes/cfield.c (lns. 76-95): if (bitsize /* this is a bitfield request */ && *pfield_size /* we have a bitfield open */ #ifdef MS_WIN32 /* MSVC, GCC with -mms-bitfields */ && dict->size * 8 == *pfield_size #else /* GCC */ && dict->size * 8 <= *pfield_size #endif && (*pbitofs + bitsize) <= *pfield_size) { /* continue bit field */ fieldtype = CONT_BITFIELD; #ifndef MS_WIN32 } else if (bitsize /* this is a bitfield request */ && *pfield_size /* we have a bitfield open */ && dict->size * 8 >= *pfield_size && (*pbitofs + bitsize) <= dict->size * 8) { /* expand bit field */ fieldtype = EXPAND_BITFIELD; #endif So the allocation of the extra byte for the structure seems to depend on Python's compiler. To make sure, I compiled a native structure using MSVC: #pragma pack(1) typedef struct _struct1 { UINT8 first : 1; UINT8 second : 1; UINT8 third : 1; UINT8 fourth : 1; UINT8 fifth : 1; UINT16 pad : 11; } struct1; And I got the same value (sizeof == 3). ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue11920> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com