你肯定有什么取消定义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。
”您的项目“ ?确保WIN32被定义,''需要cygwin,而不仅仅是mingw32。 –
John
@John对不起,'一个项目'你是什么意思'确保WIN32被定义?' – liamzebedee
什么MinGW的rsion是否在使用?什么是调用编译器的命令行? –