The first use case of this macro is for data structure assertion at compile time. It's like what we do in the io_uring.c in the kernel. Signed-off-by: Ammar Faizi <ammarfaizi2@xxxxxxxxxxx> --- src/lib.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lib.h b/src/lib.h index 40e2817..0db7499 100644 --- a/src/lib.h +++ b/src/lib.h @@ -26,6 +26,10 @@ #define BUILD_BUG_ON(EXPR) static_assert(!(EXPR), "!(" #EXPR ") failed") #endif +#ifndef sizeof_field +#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER)) +#endif + #ifndef offsetof #define offsetof(TYPE, FIELD) ((size_t) &((TYPE *)0)->FIELD) #endif -- Ammar Faizi