On Fri, 19 Oct 2007, [EMAIL PROTECTED] wrote:

> Yes, using "#undef IN" after the inclusion of WinDef.h works, but it
> seems like a bit of a hack.  By getting "those who wrote it to fix
> it", if you mean WinDef.h, it's a header from Visual Studio.
> Somehow, I doubt that I could get Microsoft to "fix" that header.
> I'd still like to understand why defining YYTOKENTYPE on the command
> line broke the link.  It sure looks like the code was written to
> give this option to not include the enum.  

I don't know what the connection could be with `YYTOKENTYPE' or what
it has to do with an `enum'.  I do know that it is a very bad idea to
have preprocessor macros that interfere with the ones defined for
tokens in Bison.  If a header file needs preprocessor macros, they
should be undefined at the end of the file, unless they are part of
the interface defined by the header and (presumably) the library it
refers to.  Defining a macro named `IN' is asking for trouble.

For you to undefine it isn't hacky, it's prudent and good programming
practice.  You are cleaning up the mess somebody else left.  Having
worked with Visual Studio and other Microsoft products, I am not
surprised that you reported this.  If it were me, I would go through
that header and see what other macros it defines.

I would prefer that Bison not use preprocessor macros, but rather `const
ints', but it's not up to me.  There may be some reason this wouldn't
work.  

Laurence Finston


_______________________________________________
help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison

Reply via email to