Remove zero length array since it is not C++ compatible
MODIFY
include/mruby/gc.h
include/mruby/gc.h
@@ -48,7 +48,6 @@ typedef struct mrb_heap_page {
struct mrb_heap_page *free_next;
struct mrb_heap_page *free_prev;
mrb_bool old:1;
- void *objects[];
} mrb_heap_page;
#ifdef _MSC_VER

MODIFY
src/gc.c
src/gc.c
@@ -214,7 +214,7 @@ mrb_static_assert(MRB_GC_RED <= GC_COLOR_MASK);
#define other_white_part(s) ((s)->current_white_part ^ GC_WHITES)
#define is_dead(s, o) (((o)->color & other_white_part(s) & GC_WHITES) || (o)->tt == MRB_TT_FREE)
-#define objects(p) ((RVALUE *)p->objects)
+#define objects(p) ((RVALUE *)&p[1])
mrb_noreturn void mrb_raise_nomemory(mrb_state *mrb);

Remove zero length array since it is not C++ compatible