From: H. Peter Anvin Date: Sat, 07 Jan 2006 20:47:06 GMT Subject: Re: [ANNOUNCE] GIT 1.0.7 Message-ID: <43C028CA.8090702@zytor.com> In-Reply-To: <7vmzi8mkdi.fsf@assigned-by-dhcp.cox.net> Junio C Hamano wrote: > > Here is what I am planning to merge into the master/maint. The > patch is for maint which does not ship with describe, but the > problematic path[] can be updated to path[FLEX_ARRAY] as others > when merging it to the master branch. > > -- >8 -- > Subject: [PATCH] Compilation: zero-length array declaration. > > ISO C99 (and GCC 3.x or later) lets you write a flexible array > at the end of a structure, like this: > > struct frotz { > int xyzzy; > char nitfol[]; /* more */ > }; > > GCC 2.95 lets you to do this with "char nitfol[0]"; > unfortunately this is not allowed by ISO C90. > > This declares such construct like this: > > struct frotz { > int xyzzy; > char nitfol[FLEX_ARRAY]; /* more */ > }; > > and git-compat-util.h defines FLEX_ARRAY to 0 for gcc 2.95 and > empty for others. > > Although I have not tried this myself, if you are using a C90 C > compiler, you should be able to override this with > CFLAGS=-DFLEX_ARRAY=1 from the command line of "make". > Any reason to not just do: struct frotz { int xyzzy; char nitfol[1]; /* more */ }; ... which should work on all compilers? -hpa