aboutsummaryrefslogtreecommitdiff
path: root/src/uvh.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/uvh.c')
-rw-r--r--src/uvh.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/uvh.c b/src/uvh.c
index 42dba30..4353b3e 100644
--- a/src/uvh.c
+++ b/src/uvh.c
@@ -10,10 +10,13 @@
#ifndef container_of
#ifdef __GNUC__
-#define container_of(ptr, type, member) ({ \
- const typeof( ((type *)0)->member ) *__mptr = (ptr); \
- (type *)( (char *)__mptr - offsetof(type,member) );})
+#define member_type(type, member) __typeof__ (((type *)0)->member)
+#else
+#define member_type(type, member) const void
#endif
+
+#define container_of(ptr, type, member) ((type *)( \
+ (char *)(member_type(type, member) *){ ptr } - offsetof(type, member)))
#endif
#define LOG(LEVEL, FMT, args...) \