MinGW not defining WIN32, error in preprocessor directives

后端 未结 2 1552
我在风中等你
我在风中等你 2021-01-02 04:10

I am using mingw32-make to compile a project to Windows, which depends on a project called libevent2. I keep receiving this error -

util.h:69:25: fatal error         


        
相关标签:
2条回答
  • 2021-01-02 05:04

    You should use _WIN32 and may also want to check for __CYGWIN__

    #if defined _WIN32 || defined __CYGWIN__
    
    0 讨论(0)
  • 2021-01-02 05:08

    Are you sure there's nothing undefining WIN32? My installation of MinGW (4.6.1 at this site) definitely defines it:

    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
    

    Try passing the -E -dM options to verify if your MinGW compiler is (or isn't) pre-defining the WIN32 macro.

    Note that strictly speaking, WIN32 should not be predefined by the compiler (since it's in the user's namespace) - only _WIN32 should. WIN32 should be set by the SDK being used and/or by the build environment - that's the way it works in Microsoft's compilers.

    For example, there's the following sequence in windef.h"

    #ifndef WIN32
    #define WIN32
    #endif
    

    and /D "WIN32" is put into Visual Studio C++ projects by default.

    See https://stackoverflow.com/a/662543/12711 for more details.

    0 讨论(0)
提交回复
热议问题