Re: src/tools/msvc usage instructions - Mailing list pgsql-hackers

From Jeremy Drake
Subject Re: src/tools/msvc usage instructions
Date
Msg-id Pine.BSO.4.64.0610021516140.7684@resin.csoft.net
Whole thread Raw
In response to Re: src/tools/msvc usage instructions  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: src/tools/msvc usage instructions  ("Sergey E. Koposov" <math@sai.msu.ru>)
Re: src/tools/msvc usage instructions  ("Magnus Hagander" <mha@sollentuna.net>)
List pgsql-hackers
On Mon, 2 Oct 2006, Tom Lane wrote:

> Jeremy Drake <pgsql@jdrake.com> writes:
> > The errors I got on this file were:
> > 1>bootparse.tab.c(1065) : error C2449: found '{' at file scope (missing function header?)
>
> I looked at this.  Line 1065 is the left brace starting yyparse().  On
> my Fedora Core 5 box with Bison 2.1 installed, the stuff leading up to
> it is
>
> #ifdef YYPARSE_PARAM
> ... some uninteresting stuff, since we don't define YYPARSE_PARAM ...
> #else /* ! YYPARSE_PARAM */
> #if defined (__STDC__) || defined (__cplusplus)
> int
> yyparse (void)
> #else
> int
> yyparse ()
>
> #endif
> #endif
> {
>
> But lookee here, your Windows-built version has
>
> #ifdef YYPARSE_PARAM
> ...
> #else /* ! YYPARSE_PARAM */
> #if defined (__STDC__) || defined (__cplusplus)
> int
> yyparse (void)
> #else
> int
> yyparse ()
>     ;
> #endif
> #endif
> {
>
> So that semicolon is the source of the trouble.  That's clearly a bison
> bug, and in fact digging in Red Hat's SRPM shows that they are carrying
> a patch for it:
>
> 2005-10-05  Paul Eggert  <eggert@cs.ucla.edu>
>
>     * data/m4sugar/m4sugar.m4 (_m4_map): New macro.
>     (m4_map, m4_map_sep): Use it.  Handle the empty list correctly.
>
<snip patch>
>
> Presumably bison 2.2 includes this fix.  But I guess the real question
> is why the devil doesn't MSVC define __STDC__ ?  Are they that far
> removed from spec compliance?

In the bison 2.2 generated code, the #if check is

#if (defined __STDC__ || defined __C99__FUNC__ \    || defined __cplusplus || defined _MSC_VER)

which looks like they figured out that they needed to check for MicroSoft
C explicitly.  I have no idea why they do not define __STDC__ however.


>
>             regards, tom lane


-- 
A person is just about as big as the things that make him angry.


pgsql-hackers by date:

Previous
From: Markus Schaber
Date:
Subject: timestamptz alias
Next
From: AgentM
Date:
Subject: Re: timestamptz alias