我尝试使用 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
并且有效(当然是在更改所有外观之后)。谁能解释这种行为?
最佳答案
MinGW 5.1 的标题为 mingw32\i686-w64-mingw32\include\winnt.h
.它包含第 6889 行的结构定义:
DWORD H : 1;
当然,如果用#define H 0
包含的header更高,那就有问题了。 .
MinGW 4.8没有这样的结构,这里可以编译。
简单的解决方法是移动 #include <windows.h>
在 hillclimb.c
之上
关于c - 使用 64 位编译器编译时出现奇怪的定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33159995/