1 #ifndef _EXT2FS_COMPILER_H 2 #define _EXT2FS_COMPILER_H 3 4 #include <stddef.h> 5 6 #ifdef __GNUC__ 7 8 #define container_of(ptr, type, member) ({ \ 9 __typeof__( ((type *)0)->member ) *__mptr = (ptr); \ 10 (type *)( (char *)__mptr - offsetof(type,member) );}) 11 #else 12 #define container_of(ptr, type, member) \ 13 ((type *)((char *)(ptr) - offsetof(type, member))) 14 #endif 15 16 17 #endif /* _EXT2FS_COMPILER_H */ 18