]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
lib/sizeof.h: memberof(): Add macro
authorAlejandro Colomar <alx@kernel.org>
Sun, 18 Feb 2024 17:32:31 +0000 (18:32 +0100)
committerAlejandro Colomar <alx@kernel.org>
Tue, 20 Feb 2024 17:53:53 +0000 (18:53 +0100)
This macro is useful to get the size of a member of a structure
without having a variable of that type.

Reviewed-by: Iker Pedrosa <ipedrosa@redhat.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
lib/sizeof.h

index f16e1a7bf63aed9cc553e02c213ae83cd24bbb01..6847068eacb0da894d945ecfb1dc0f4ba124fb72 100644 (file)
 #include "must_be.h"
 
 
-#define WIDTHOF(x)       (sizeof(x) * CHAR_BIT)
-#define SIZEOF_ARRAY(a)  (sizeof(a) + must_be_array(a))
-#define NITEMS(a)        (SIZEOF_ARRAY((a)) / sizeof((a)[0]))
-#define STRLEN(s)        (NITEMS(s) - 1)
+#define memberof(T, member)  ((T){}.member)
+#define WIDTHOF(x)           (sizeof(x) * CHAR_BIT)
+#define SIZEOF_ARRAY(a)      (sizeof(a) + must_be_array(a))
+#define NITEMS(a)            (SIZEOF_ARRAY((a)) / sizeof((a)[0]))
+#define STRLEN(s)            (NITEMS(s) - 1)
 
 
 #endif  // include guard