diff options
author | kan <kan@FreeBSD.org> | 2005-06-03 17:53:36 +0000 |
---|---|---|
committer | kan <kan@FreeBSD.org> | 2005-06-03 17:53:36 +0000 |
commit | 56c06eca5cb3797ddddac75232cdcb4d87a74006 (patch) | |
tree | a4e1e85232b77b0c4fad76ed6aeb8753f74039b8 | |
parent | d2230420e91e4fcfe37912c39497d0ccccb8e095 (diff) | |
download | FreeBSD-src-56c06eca5cb3797ddddac75232cdcb4d87a74006.zip FreeBSD-src-56c06eca5cb3797ddddac75232cdcb4d87a74006.tar.gz |
Use predefined __offsetof__ builtin function when compiling C++ sources.
-rw-r--r-- | sys/sys/cdefs.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h index fb5c55b..d8499fe 100644 --- a/sys/sys/cdefs.h +++ b/sys/sys/cdefs.h @@ -307,7 +307,14 @@ * We define this here since <stddef.h>, <sys/queue.h>, and <sys/types.h> * require it. */ +#ifndef __cplusplus #define __offsetof(type, field) ((size_t)(&((type *)0)->field)) +#else +#define __offsetof(type, field) \ + (__offsetof__ (reinterpret_cast <size_t> \ + (&reinterpret_cast <const volatile char &> \ + (static_cast<type *> (0)->field)))) +#endif #define __rangeof(type, start, end) \ (__offsetof(type, end) - __offsetof(type, start)) |