简体   繁体   中英

Strange define Error when compiling with 64bit compiler

I tried to use the 64bit MinGW GCC compiler to compile the enigma suite ( http://www.bytereef.org/enigma-suite.html ). When I use the 32bit compiler everything works fine. With the 64bit one I get the following error:

enigma\global.h|6|error: expected identifier or '(' before numeric constant|

and the line in question is:

#define H 0

Out of curiosity I changed the line to

#define H3 0 

and it works (of course after changing all appearances). Can anyone explain this behavior?

The MinGW 5.1 has header mingw32\\i686-w64-mingw32\\include\\winnt.h . It contains structure definition with line 6889:

DWORD H : 1;

Of course, it is a problem if there is higher included header with #define H 0 .

MinGW 4.8 does not have such structure, so here it can be compiled.


The simple fix is to move #include <windows.h> on top of hillclimb.c

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM