mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge pull request #2373 from take-cheeze/static_assert
Add macro `mrb_static_assert`.
This commit is contained in:
@@ -429,6 +429,12 @@ void mrb_atexit(mrb_state *mrb, mrb_atexit_func func);
|
||||
#define mrb_assert_int_fit(t1,n,t2,max) ((void)0)
|
||||
#endif
|
||||
|
||||
#if __STDC_VERSION__ >= 201112L
|
||||
#define mrb_static_assert(exp, str) _Static_assert(exp, str)
|
||||
#else
|
||||
#define mrb_static_assert(exp, str) mrb_assert(exp)
|
||||
#endif
|
||||
|
||||
mrb_value mrb_format(mrb_state *mrb, const char *format, ...);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ mrb_open_allocf(mrb_allocf f, void *ud)
|
||||
mrb_state *mrb;
|
||||
|
||||
#ifdef MRB_NAN_BOXING
|
||||
mrb_assert(sizeof(void*) == 4);
|
||||
mrb_static_assert(sizeof(void*) == 4, "when using NaN boxing sizeof pointer must be 4 byte");
|
||||
#endif
|
||||
|
||||
mrb = (mrb_state *)(f)(NULL, NULL, sizeof(mrb_state), ud);
|
||||
|
||||
@@ -2503,6 +2503,8 @@ mrb_init_string(mrb_state *mrb)
|
||||
{
|
||||
struct RClass *s;
|
||||
|
||||
mrb_static_assert(RSTRING_EMBED_LEN_MAX < (1 << 5), "pointer size too big for embedded string");
|
||||
|
||||
s = mrb->string_class = mrb_define_class(mrb, "String", mrb->object_class); /* 15.2.10 */
|
||||
MRB_SET_INSTANCE_TT(s, MRB_TT_STRING);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user