From d48d51df239fbc2f64727a74841926e33fc8019c Mon Sep 17 00:00:00 2001 From: Benoît Ganne Date: Tue, 7 Jul 2020 16:32:22 +0200 Subject: vppinfra: enable STATIC_ASSERT with clang MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For some reason clang does not support &((struct foo*)0)->field in static assertion contrary to gcc. Use offsetof() macro implementation provided by both compilers instead. Type: fix Change-Id: I3311cdd29c5861e45dc0ef92f2bbd66242ca73b8 Signed-off-by: Benoît Ganne (cherry picked from commit 5e60c17f49082b7731778e81b58177177a31b58f) --- src/vppinfra/clib.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/vppinfra/clib.h') diff --git a/src/vppinfra/clib.h b/src/vppinfra/clib.h index 5e62cc81819..ecd70980996 100644 --- a/src/vppinfra/clib.h +++ b/src/vppinfra/clib.h @@ -38,6 +38,7 @@ #ifndef included_clib_h #define included_clib_h +#include #include /* Standalone means to not assume we are running on a Unix box. */ @@ -62,8 +63,8 @@ #define ARRAY_LEN(x) (sizeof (x)/sizeof (x[0])) #define _STRUCT_FIELD(t,f) (((t *) 0)->f) -#define STRUCT_OFFSET_OF(t,f) ((uword) & _STRUCT_FIELD (t, f)) -#define STRUCT_BIT_OFFSET_OF(t,f) (BITS(u8) * (uword) & _STRUCT_FIELD (t, f)) +#define STRUCT_OFFSET_OF(t,f) offsetof(t, f) +#define STRUCT_BIT_OFFSET_OF(t,f) (BITS(u8) * STRUCT_OFFSET_OF (t, f)) #define STRUCT_SIZE_OF(t,f) (sizeof (_STRUCT_FIELD (t, f))) #define STRUCT_BITS_OF(t,f) (BITS (_STRUCT_FIELD (t, f))) #define STRUCT_ARRAY_LEN(t,f) ARRAY_LEN (_STRUCT_FIELD (t, f)) -- cgit 1.2.3-korg