summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2005-06-03 17:53:36 +0000
committerkan <kan@FreeBSD.org>2005-06-03 17:53:36 +0000
commit56c06eca5cb3797ddddac75232cdcb4d87a74006 (patch)
treea4e1e85232b77b0c4fad76ed6aeb8753f74039b8
parentd2230420e91e4fcfe37912c39497d0ccccb8e095 (diff)
downloadFreeBSD-src-56c06eca5cb3797ddddac75232cdcb4d87a74006.zip
FreeBSD-src-56c06eca5cb3797ddddac75232cdcb4d87a74006.tar.gz
Use predefined __offsetof__ builtin function when compiling C++ sources.
-rw-r--r--sys/sys/cdefs.h7
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))
OpenPOWER on IntegriCloud