Re: src/tools/msvc usage instructions

From: Jeremy Drake <pgsql(at)jdrake(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: src/tools/msvc usage instructions
Date: 2006-10-02 22:21:37
Message-ID: Pine.BSO.4.64.0610021516140.7684@resin.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, 2 Oct 2006, Tom Lane wrote:

> Jeremy Drake <pgsql(at)jdrake(dot)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(at)cs(dot)ucla(dot)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.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message AgentM 2006-10-02 22:22:39 Re: timestamptz alias
Previous Message Markus Schaber 2006-10-02 22:15:44 timestamptz alias