diff options
author | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-04-22 19:32:57 -0600 |
---|---|---|
committer | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-05-06 11:50:46 -0600 |
commit | 333a1592b3f6767612ddb2a97aacfd0898a636fc (patch) | |
tree | 3c0267c7c63fdcf7437db2d5fad1459f5e39a3e9 | |
parent | c519a3a748ca5e5c77e8a06c82d54416d674938c (diff) |
Use static_assert to force semicolons, instead of empty structs
-rw-r--r-- | libmisc/include/libmisc/macro.h | 2 | ||||
-rw-r--r-- | libmisc/include/libmisc/private.h | 4 | ||||
-rw-r--r-- | libobj/include/libobj/obj.h | 2 |
3 files changed, 5 insertions, 3 deletions
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 <libmisc/assert.h> +#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_ */ diff --git a/libobj/include/libobj/obj.h b/libobj/include/libobj/obj.h index 7a9041e..81058b6 100644 --- a/libobj/include/libobj/obj.h +++ b/libobj/include/libobj/obj.h @@ -115,7 +115,7 @@ .vtable = &_lo_##_ARG_impl_name##_##_ARG_iface_name##_vtable, \ }; \ } \ - extern int LM_CAT2_(_LO_FORCE_SEMICOLON_, __COUNTER__) + LM_FORCE_SEMICOLON /** * Use `LO_IMPLEMENTATION_C(iface_name, impl_type, impl_name[, static])` in a .c |