X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fcontainer_of%2Fcontainer_of.h;h=2a6b1cd54e9dcf97f57b0b282e23bb7de82ae0db;hp=de3f4505162a5416f477d5624e0049da6d2abeec;hb=6fa62e5ae1e29646aa718e99020fdf2efee74373;hpb=18636637ee013ef828cb04b2b7bb4a4922324475 diff --git a/ccan/container_of/container_of.h b/ccan/container_of/container_of.h index de3f4505..2a6b1cd5 100644 --- a/ccan/container_of/container_of.h +++ b/ccan/container_of/container_of.h @@ -51,12 +51,13 @@ * return i; * } */ -#ifdef HAVE_TYPEOF +#if HAVE_TYPEOF #define container_of_var(member_ptr, var, member) \ container_of(member_ptr, typeof(*var), member) #else -#define container_of_var(member_ptr, var, member) \ - ((void *)((char *)(member_ptr) - offsetof(containing_type, member))) +#define container_of_var(member_ptr, var, member) \ + ((void *)((char *)(member_ptr) \ + - ((char *)&(var)->member - (char *)(var)))) #endif #endif /* CCAN_CONTAINER_OF_H */