我尝试使用64位MinGW GCC编译器来编译enigma套件(http://www.bytereef.org/enigma-suite.html)。 当我使用32位编译器时,一切正常。使用64位,我得到以下错误:
enigma\global.h|6|error: expected identifier or '(' before numeric constant|
并且有问题的一行是:
#define H 0
出于好奇,我将线路改为
#define H3 0
它有效(当然在改变所有外观后)。任何人都可以解释这种行为吗?
答案 0 :(得分:2)
MinGW 5.1标题为mingw32\i686-w64-mingw32\include\winnt.h
。它包含带有6889行的结构定义:
DWORD H : 1;
当然,如果#define H 0
包含更高的标题,则会出现问题。
MinGW 4.8没有这样的结构,所以在这里可以编译。
简单的解决方法是将#include <windows.h>
移到hillclimb.c