2015-10-15 3 views
1

Я попытался использовать компилятор MinGW GCC с 64-битным компилятором для компиляции набора загадок (http://www.bytereef.org/enigma-suite.html). Когда я использую 32-битный компилятор, все работает нормально. С 64-битной один я получаю следующее сообщение об ошибке:Strange define Ошибка при компиляции с 64-битным компилятором

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

и линию в вопросе:

#define H 0 

Из любопытства я изменил строку

#define H3 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