diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-11-20 12:08:06 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-11-20 15:03:56 -0800 |
commit | 8e9739914972419baad820e76b44d9720ed885c2 (patch) | |
tree | d8d49bb78c146467a202f63a8c681fba7fa1884a /git-compat-util.h | |
parent | 137a0d0ef568f0a2468c8c7f053ef113e295842f (diff) | |
download | git-8e9739914972419baad820e76b44d9720ed885c2.tar.gz |
git-compat-util.h: auto-adjust to compiler support of FLEX_ARRAY a bit better
When declaring a structure with a flexible array member, instead
of defaulting to the c99 syntax for non-gnu compilers (which
burned people with older compilers), default to the traditional
and more portable "member[1]; /* more */" syntax.
At the same time, other c99 compilers should be able to take
advantage of the modern syntax to flexible array members without
being gcc. Check __STDC_VERSION__ for that.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-compat-util.h')
-rw-r--r-- | git-compat-util.h | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/git-compat-util.h b/git-compat-util.h index 276a43724d..86c8962966 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -4,10 +4,24 @@ #define _FILE_OFFSET_BITS 64 #ifndef FLEX_ARRAY -#if defined(__GNUC__) && (__GNUC__ < 3) -#define FLEX_ARRAY 0 -#else -#define FLEX_ARRAY /* empty */ +/* + * See if our compiler is known to support flexible array members. + */ +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) +# define FLEX_ARRAY /* empty */ +#elif defined(__GNUC__) +# if (__GNUC__ >= 3) +# define FLEX_ARRAY /* empty */ +# else +# define FLEX_ARRAY 0 /* older GNU extension */ +# endif +#endif + +/* + * Otherwise, default to safer but a bit wasteful traditional style + */ +#ifndef FLEX_ARRAY +# define FLEX_ARRAY 1 #endif #endif |