From: Björn Steinbrink Date: Fri, 16 Nov 2007 12:55:27 GMT Subject: Re: [PATCH] Fix "identifier redeclared" compilation error with SUN cc. Message-ID: <20071116125527.GB14473@atjola.homenet> In-Reply-To: <7vd4ua3hww.fsf@gitster.siamese.dyndns.org> On 2007.11.15 20:58:55 -0800, Junio C Hamano wrote: > How about doing it this way? > > # ifndef FLEX_ARRAY > # if defined(__GNUC__) > # if (__GNUC__ < 3) > # define FLEX_ARRAY 0 > # else > # define FLEX_ARRAY /* empty */ > # endif > # else > /* more cases we know we can use 0 or empty can come here */ > # endif > # endif > > /* if still undefined, default to the safe, old fashioned way */ > # ifndef FLEX_ARRAY > # define FLEX_ARRAY 1 > # endif Yeah, looks a bit smarter. > The basic idea is: > > * The user (from Makefile command line, config.mak, or you > could add autoconf test) can pass -DFLEX_ARRAY=... to specify > exactly what should happen; Eeeek! He said autoconf! Waaah! ... Ehrm, sorry where was I? > * Otherwise, if we happen to know for sure that we can use "0" > or "/* empty */" with the compiler, we define FLEX_ARRAY; > currently we know such things for gcc. > > * For everybody else, we use safer default of "1". IOW, if you > know your compiler does not grok "/* empty */" nor "0", you > do not have to do anything special but use the default case > as everybody else. Yep, definitely better than my patch. Björn