From 333a1592b3f6767612ddb2a97aacfd0898a636fc Mon Sep 17 00:00:00 2001 From: "Luke T. Shumaker" Date: Tue, 22 Apr 2025 19:32:57 -0600 Subject: Use static_assert to force semicolons, instead of empty structs --- libmisc/include/libmisc/macro.h | 2 ++ libmisc/include/libmisc/private.h | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'libmisc/include') diff --git a/libmisc/include/libmisc/macro.h b/libmisc/include/libmisc/macro.h index a95ac82..93286c6 100644 --- a/libmisc/include/libmisc/macro.h +++ b/libmisc/include/libmisc/macro.h @@ -9,6 +9,8 @@ #include +#define LM_FORCE_SEMICOLON static_assert(1, "force semicolon") + /* for function definitions */ #define LM_UNUSED(argname) diff --git a/libmisc/include/libmisc/private.h b/libmisc/include/libmisc/private.h index 5518d1f..5a8777c 100644 --- a/libmisc/include/libmisc/private.h +++ b/libmisc/include/libmisc/private.h @@ -11,7 +11,7 @@ #define YES LM_SENTINEL() #define IS_IMPLEMENTATION_FOR(name) LM_IS_SENTINEL(IMPLEMENTATION_FOR_##name) -#define BEGIN_PRIVATE(name) LM_IF(IS_IMPLEMENTATION_FOR(name))()(struct {) struct {} LM_CAT2_(_PRIVATE_FORCE_SEMICOLON_, __COUNTER__) -#define END_PRIVATE(name) LM_IF(IS_IMPLEMENTATION_FOR(name))(struct {} LM_CAT2_(_PRIVATE_FORCE_SEMICOLON_, __COUNTER__))(} LM_CAT2_(_PRIVATE_, __COUNTER__)) +#define BEGIN_PRIVATE(name) LM_IF(IS_IMPLEMENTATION_FOR(name))()(struct {) LM_FORCE_SEMICOLON +#define END_PRIVATE(name) LM_IF(IS_IMPLEMENTATION_FOR(name))(LM_FORCE_SEMICOLON)(} LM_CAT2_(_PRIVATE_, __COUNTER__)) #endif /* _LIBMISC_PRIVATE_H_ */ -- cgit v1.2.3-2-g168b