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

Reply via email to