Beautify the container_of macro
authorPetri Lehtinen <petri@digip.org>
Thu, 12 Aug 2010 18:34:02 +0000 (21:34 +0300)
committerPetri Lehtinen <petri@digip.org>
Thu, 12 Aug 2010 18:34:51 +0000 (21:34 +0300)
Use offsetof instead of zero pointer dereference trickery.

src/jansson_private.h

index 4490702..6d7e46c 100644 (file)
@@ -8,11 +8,12 @@
 #ifndef JANSSON_PRIVATE_H
 #define JANSSON_PRIVATE_H
 
+#include <stddef.h>
 #include "jansson.h"
 #include "hashtable.h"
 
 #define container_of(ptr_, type_, member_)  \
-    ((type_ *)((char *)ptr_ - (size_t)&((type_ *)0)->member_))
+    ((type_ *)((char *)ptr_ - offsetof(type_, member_)))
 
 typedef struct {
     json_t json;