On Friday 16 December 2011 09:22:24 Ed Schouten wrote: > Author: ed > Date: Fri Dec 16 08:22:23 2011 > New Revision: 228562 > URL: http://svn.freebsd.org/changeset/base/228562 > > Log: > Process a lot of feedback from bde@ on <sys/cdefs.h>: > > - Add __alignof() for non-GCC and GCC < 2.95. > - Simply implement the C1X keywords on top of the existing __macros. > - Add struct __hack to _Static_assert to require consumers to add a > semicolon. > - Add an extra underscore to __assert_ to allow it to be combined with > locally defined versions of CTASSERT in the tree. > - Add proper casts to __offsetof() to make it work for cases where > sizeof(size_t) != sizeof(uintptr_t). > - Globally replace size_t and uintptr_t by __size_t and __uintptr_t. > This removes the dependency on <sys/types.h> / <stdint.h>. Practically > any header file ends up including <machines/_types.h> somehow. > - Change argument names of macros to match with the rest of the file. > > MFC after: 3 months > > Modified: > head/sys/sys/cdefs.h > > Modified: head/sys/sys/cdefs.h > ============================================================================== > --- head/sys/sys/cdefs.h Fri Dec 16 02:09:51 2011 (r228561) > +++ head/sys/sys/cdefs.h Fri Dec 16 08:22:23 2011 (r228562) > @@ -363,10 +360,11 @@ > #define __offsetof(type, field) __builtin_offsetof(type, field) > #else > #ifndef __cplusplus > -#define __offsetof(type, field) ((size_t)(&((type *)0)->field)) > +#define __offsetof(type, field) \ > + ((__size_t)(__uintptr_t)((const volatile void *)&((type *)0)->member))
s/member/field/ > #else > #define __offsetof(type, field) \ > - (__offsetof__ (reinterpret_cast <size_t> \ > + (__offsetof__ (reinterpret_cast <__size_t> \ > (&reinterpret_cast <const volatile char &> \ > (static_cast<type *> (0)->field)))) > #endif
signature.asc
Description: This is a digitally signed message part.
