]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
macro-fundamental: Introduce typeof_field()
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 21 May 2025 08:47:56 +0000 (10:47 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 21 May 2025 08:49:37 +0000 (10:49 +0200)
src/fundamental/macro-fundamental.h
src/test/test-sizeof.c

index da5c0c9c50393b7bf6eebeac2d5b3a6d238ae436..6a75d7864a9b6de5c365dbbd45a39bbcd3f6cdfb 100644 (file)
@@ -444,6 +444,7 @@ assert_cc(sizeof(dummy_t) == 0);
         #define DECLARE_SBAT(text)
 #endif
 
+#define typeof_field(struct_type, member) typeof(((struct_type *) 0)->member)
 #define sizeof_field(struct_type, member) sizeof(((struct_type *) 0)->member)
 #define endoffsetof_field(struct_type, member) (offsetof(struct_type, member) + sizeof_field(struct_type, member))
 #define voffsetof(v, member) offsetof(typeof(v), member)
index fe90341dc815fcc06d89d133cf17d83fb3f3ee84..9332f2750a3afe6707e29bce646c2aacc8f6798b 100644 (file)
@@ -65,7 +65,7 @@ int main(void) {
         check_no_sign(ino_t, SIZEOF_INO_T);
         check_no_sign(rlim_t, SIZEOF_RLIM_T);
         check(time_t, SIZEOF_TIME_T);
-        check(typeof(((struct timex *)0)->freq), SIZEOF_TIMEX_MEMBER);
+        check(typeof_field(struct timex, freq), SIZEOF_TIMEX_MEMBER);
 
         info_no_sign(typeof(function_pointer));
         info_no_sign(void*);