c - 使用 64 位编译器编译时出现奇怪的定义错误

标签 c windows gcc x86-64

我尝试使用 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/

相关文章:

windows - robocopy 导致成功退出(1)

c - 如何为使用第三方库的 C 程序设置成熟的构建过程(APR - Apache Portability Runtime)

c++ - 使用 c++0x 初始化列表时出现段错误

与指针混淆

c - 为什么在位溢出的情况下丢弃 MSB?

无法创建 posix 消息队列

c - gdb 无法打印数组的内容

windows - Windows Azure 能否随着负载变化动态扩展应用程序?

java - Windows 上的 Docker 引擎会忽略 Spring Boot Web 应用程序的 server.port 属性

c - gcc 的所有这些功能是什么? (-l -a -等)