From 2ae038c01cfb2062a26dddc83415e053cb49f1f8 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Fri, 12 Jan 2024 23:00:56 +0300 Subject: [PATCH] common: fix broken STATIC_ASSERT macro again --- common/xash3d_types.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/common/xash3d_types.h b/common/xash3d_types.h index 14f5044a..5c0760a2 100644 --- a/common/xash3d_types.h +++ b/common/xash3d_types.h @@ -121,15 +121,18 @@ typedef uint64_t longtime_t; #define likely(x) (x) #endif -#if __STDC_VERSION >= 202311L || __cplusplus >= 201103L // C23 or C++ static_assert is a keyword - #define STATIC_ASSERT_ static_assert +#if __STDC_VERSION__ >= 202311L || __cplusplus >= 201103L // C23 or C++ static_assert is a keyword + #define STATIC_ASSERT_( ignore, x, y ) static_assert( x, y ) #define STATIC_ASSERT static_assert -#elif __STDC_VERSION >= 201112L // in C11 it's _Static_assert - #define STATIC_ASSERT_ _Static_assert +#elif __STDC_VERSION__ >= 201112L // in C11 it's _Static_assert + #define STATIC_ASSERT_( ignore, x, y ) _Static_assert( x, y ) #define STATIC_ASSERT _Static_assert #else #define STATIC_ASSERT_( id, x, y ) extern int id[( x ) ? 1 : -1] - #define STATIC_ASSERT( x, y ) STATIC_ASSERT_( static_assert_##__LINE__, x, y ) + // need these to correctly expand the line macro + #define STATIC_ASSERT_3( line, x, y ) STATIC_ASSERT_( static_assert_ ## line, x, y ) + #define STATIC_ASSERT_2( line, x, y ) STATIC_ASSERT_3( line, x, y ) + #define STATIC_ASSERT( x, y ) STATIC_ASSERT_2( __LINE__, x, y ) #endif #ifdef XASH_BIG_ENDIAN