Make `gb.h` compatible with C++ again for bsnes integration. Fixed
#define GB_PADDING(type, old_usage) type old_usage##__do_not_use
+#ifdef __cplusplus
+/* For bsnes integration. C++ code does not need section information, and throws a fit over certain types such
+ as anonymous enums inside unions */
+#define GB_SECTION(name, ...) __attribute__ ((aligned (8))) __VA_ARGS__
+#else
#define GB_SECTION(name, ...) __attribute__ ((aligned (8))) union {uint8_t name##_section_start; struct {__VA_ARGS__};}; uint8_t name##_section_end[0]
#define GB_SECTION_OFFSET(name) (offsetof(GB_gameboy_t, name##_section_start))
#define GB_SECTION_SIZE(name) (offsetof(GB_gameboy_t, name##_section_end) - offsetof(GB_gameboy_t, name##_section_start))
#define GB_GET_SECTION(gb, name) ((void*)&((gb)->name##_section_start))
+#endif
#define GB_aligned_double __attribute__ ((aligned (8))) double
