mirror of
https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
synced 2024-12-04 07:23:33 +08:00
libext2fs: use statement-expression for container_of only on GNU-compatible compilers
Functionally, the statement-expression is not necessary here; it just gives a bit of type-safety to make sure the pointer really does have a compatible type with the specified member of the struct. When statement expressions are not available, we can just use a portable fallback macro that skips this member type check. Signed-off-by: Michael Forney <mforney@mforney.org> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
f11448318f
commit
9d5fdcc5db
@ -14,9 +14,14 @@
|
||||
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define container_of(ptr, type, member) ({ \
|
||||
const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
|
||||
(type *)( (char *)__mptr - offsetof(type,member) );})
|
||||
#else
|
||||
#define container_of(ptr, type, member) \
|
||||
((type *)((char *)(ptr) - offsetof(type, member)))
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _EXT2FS_COMPILER_H */
|
||||
|
Loading…
Reference in New Issue
Block a user