Re: [PATCH] Fix "identifier redeclared" compilation error with SUN cc.

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Björn <B.Steinbrink@...>
Cc: <gitster@...>, <raa.lkml@...>, <git@...>, <git@...>
Date: Friday, November 16, 2007 - 12:58 am

Björn Steinbrink <B.Steinbrink@gmx.de> writes:



This feels a bit too narrow and too broad at the same time,
doesn't it?

As I suspect there are other compilers that do not implement
flexible array members (so you cannot use "member[]") nor older
gcc extension of zero sized member (so you cannot use
"member[0]" either), this checking specifically for Sun is too
narrow.

On the other hand, as you said, this is too broad, because not
everybody may be using the SUN compiler on Sun, nor the version
that does not understand flexible array members.

But being broad should always be safer, albeit a bit wasteful.

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

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;

 * 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.

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] Fix Solaris Workshop Compiler issues, Guido Ostkamp, (Wed Nov 14, 4:31 pm)
Re: [PATCH] Fix Solaris Workshop Compiler issues, Alex Riesen, (Wed Nov 14, 4:47 pm)
Re: [PATCH] Fix Solaris Workshop Compiler issues, Junio C Hamano, (Wed Nov 14, 5:25 pm)
Re: [PATCH] Fix Solaris Workshop Compiler issues, Guido Ostkamp, (Wed Nov 14, 7:21 pm)
Re: [PATCH] Fix Solaris Workshop Compiler issues, Alex Riesen, (Wed Nov 14, 7:28 pm)
Re: [PATCH] Fix Solaris Workshop Compiler issues, Junio C Hamano, (Wed Nov 14, 8:30 pm)
Re: [PATCH] Fix Solaris Workshop Compiler issues, Linus Torvalds, (Wed Nov 14, 8:44 pm)
Re: [PATCH] Fix Solaris Workshop Compiler issues, David Kastrup, (Wed Nov 14, 9:21 pm)
Re: [PATCH] Fix Solaris Workshop Compiler issues, Junio C Hamano, (Wed Nov 14, 11:27 pm)
Re: [PATCH] Fix Solaris Workshop Compiler issues, Linus Torvalds, (Wed Nov 14, 9:53 pm)
Re: [PATCH] Fix Solaris Workshop Compiler issues, Junio C Hamano, (Wed Nov 14, 8:46 pm)
[PATCH] Fix "identifier redeclared" compilation error with S..., Björn Steinbrink, (Wed Nov 14, 9:15 pm)
Re: [PATCH] Fix "identifier redeclared" compilation error wi..., Junio C Hamano, (Fri Nov 16, 12:58 am)
[PATCH] Add mkdtemp() workaround for Sun Solaris 10, Guido Ostkamp, (Fri Nov 16, 2:59 pm)
[RFH] Solaris portability, Junio C Hamano, (Fri Nov 16, 8:33 pm)
Re: [RFH] Solaris portability, Guido Ostkamp, (Sun Nov 18, 8:08 am)
Re: [RFH] Solaris portability, Junio C Hamano, (Sun Nov 18, 1:46 pm)