On 19 Oct 2007, at 00:42, [EMAIL PROTECTED] wrote:
I am running into an interesting problem on Windows with Bison
2.1. My grammar defines the word IN as a token. When I build on
Windows, there is a file which includes the generated gram.h after
including Microsoft's header WinDef.h. I'm using Visual
Studio .NET 2003. Unfortunately, that header defines "IN":
#define IN
So, when compiling, the inclusion of gram.h gets an error due to
the enum yytokentype which ends up getting the line for IN messed
up during preprocessing:
...
= 250,
INTEGER = 251,
...
I can undefine "IN" before the inclusion of gram.h which works, but
is a bit hacky. I tried defining YYTOKENTYPE in the compile line
(the enum is conditionalized with YYTOKENTYPE), but I got a link
error when doing so. Any idea why defining YYTOKENTYPE in the
compile line causes this problem? It sure looks like it's there
for this reason.
You might try #undef IN after the inclusion of your header that
defines it. If you need the name, you might try #define INFOOBAR IN
before the #undef.
Otherwise, it is a problem of that header; get those who wrote it to
fix it.
Hans Aberg
_______________________________________________
help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison