Don't use flexible array member syntax when compiling with C++.

Fixes issue #378.
This commit is contained in:
Alex Shinn 2016-10-27 21:29:13 +09:00
parent 50b17ac397
commit 0281c590f0

View file

@ -7,6 +7,9 @@
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#define SEXP_FLEXIBLE_ARRAY [1]
#else
#define SEXP_FLEXIBLE_ARRAY []
#endif #endif
#define SEXP_MODULE_PATH_VAR "CHIBI_MODULE_PATH" #define SEXP_MODULE_PATH_VAR "CHIBI_MODULE_PATH"
@ -384,16 +387,16 @@ struct sexp_struct {
} pair; } pair;
struct { struct {
sexp_uint_t length; sexp_uint_t length;
sexp data[]; sexp data SEXP_FLEXIBLE_ARRAY;
} vector; } vector;
struct { struct {
sexp_uint_t length; sexp_uint_t length;
char data[]; char data SEXP_FLEXIBLE_ARRAY;
} bytes; } bytes;
struct { struct {
#if SEXP_USE_PACKED_STRINGS #if SEXP_USE_PACKED_STRINGS
sexp_uint_t length; sexp_uint_t length;
char data[]; char data SEXP_FLEXIBLE_ARRAY;
#else #else
sexp_uint_t offset, length; sexp_uint_t offset, length;
sexp bytes; sexp bytes;
@ -401,7 +404,7 @@ struct sexp_struct {
} string; } string;
struct { struct {
sexp_uint_t length; sexp_uint_t length;
char data[]; char data SEXP_FLEXIBLE_ARRAY;
} symbol; } symbol;
struct { struct {
FILE *stream; FILE *stream;
@ -424,7 +427,7 @@ struct sexp_struct {
struct { struct {
signed char sign; signed char sign;
sexp_uint_t length; sexp_uint_t length;
sexp_uint_t data[]; sexp_uint_t data SEXP_FLEXIBLE_ARRAY;
} bignum; } bignum;
struct { struct {
sexp numerator, denominator; sexp numerator, denominator;
@ -436,7 +439,7 @@ struct sexp_struct {
sexp_uint_t length; sexp_uint_t length;
void *value; void *value;
sexp parent; sexp parent;
char body[]; char body SEXP_FLEXIBLE_ARRAY;
} cpointer; } cpointer;
/* runtime types */ /* runtime types */
struct { struct {
@ -448,7 +451,7 @@ struct sexp_struct {
struct { struct {
sexp_uint_t length, max_depth; sexp_uint_t length, max_depth;
sexp name, literals, source; sexp name, literals, source;
unsigned char data[]; unsigned char data SEXP_FLEXIBLE_ARRAY;
} bytecode; } bytecode;
struct { struct {
char flags; char flags;
@ -492,7 +495,7 @@ struct sexp_struct {
/* compiler state */ /* compiler state */
struct { struct {
sexp_uint_t length, top; sexp_uint_t length, top;
sexp data[]; sexp data SEXP_FLEXIBLE_ARRAY;
} stack; } stack;
struct { struct {
sexp_heap heap; sexp_heap heap;