Unverified Commit ab5726d4 authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto Committed by GitHub

Merge pull request #5061 from shuujii/allow-mrb_static_assert-to-be-used-outside-of-functions

Allow `mrb_static_assert()` to be used outside of functions
parents df969b16 0d54568b
...@@ -68,9 +68,15 @@ ...@@ -68,9 +68,15 @@
# define mrb_static_assert(exp, str) static_assert(exp, str) # define mrb_static_assert(exp, str) static_assert(exp, str)
#else #else
/* C version of static_assert() */ /* C version of static_assert() */
# define mrb_static_assert(cond, str) \ # define _mrb_static_assert_cat0(a, b) a##b
do { int assertion_failed[(cond) ? 1 : -1];\ # define _mrb_static_assert_cat(a, b) _mrb_static_assert_cat0(a, b)
(void) assertion_failed; } while(0) # ifdef __COUNTER__
# define _mrb_static_assert_id(prefix) _mrb_static_assert_cat(prefix, __COUNTER__)
# else
# define _mrb_static_assert_id(prefix) _mrb_static_assert_cat(prefix, __LINE__)
# endif
# define mrb_static_assert(exp, str) \
struct _mrb_static_assert_id(_mrb_static_assert_) { char x[(exp) ? 1 : -1]; }
#endif #endif
#define mrb_static_assert1(exp) mrb_static_assert(exp, #exp) #define mrb_static_assert1(exp) mrb_static_assert(exp, #exp)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment