Вы уверены, что нет ничего неопределенного WIN32
? Моя установка MinGW (4.6.1 на этом сайте) определенно определяет это:
C:\temp>gcc -E -dM test.c | find /i "win"
#define _WIN32 1
#define __WINT_MAX__ 65535
#define _WINT_T
#define __WINT_MIN__ 0
#define __WIN32 1
#define __WINNT 1
#define __WINNT__ 1
#define __WIN32__ 1
#define __SIZEOF_WINT_T__ 2
#define WIN32 1 // <-- right here
#define __WINT_TYPE__ short unsigned int
#define WINNT 1
Попробуйте передать параметры -E -dM
, чтобы убедиться, что ваш компилятор MinGW (или нет) предварительно определяет макрос WIN32
.
Обратите внимание, что, строго говоря, WIN32
должен не быть предопределенным компилятором (поскольку он находится в пространстве имен пользователя) - только _WIN32
. WIN32
должен быть установлен используемым SDK и / или средой сборки - так работает он в компиляторах Microsoft.
Например, в windef.h
"
есть следующая последовательность
#ifndef WIN32
#define WIN32
#endif
и /D "WIN32"
по умолчанию помещаются в проекты Visual Studio C ++.
Подробнее см. https://stackoverflow.com/a/662543/12711.