Alex Rivera | Logout

Using macros WIN32 or _MSC_VER cross-platform

Asked 2010-02-27T16:56:49.163
13

I am compiling under Linux (GCC 4.4.2) and Windows VS C++ Express Edition 2008

I am currently compiling under Windows XP Pro 32 bit, and have added this to my source code.

#if defined( WIN32 )
/* Do windows stuff here */
#endif

However, the code in the if statement is disabled (grayed out). However if I do the following:

#if defined( _MSC_VER )
/* Do windows stuff here */
#endif

The if statement code is enabled.

I am just wondering, what should I be using. I have seen many programmers use WIN32. However, doesn't seem to work for me. Should I be using _MSC_VER instead?

Many thanks for any advice,

c
Edit
Report

1 Answer

19

There is no WIN32. If you've seen it being used elsewhere, it's either wrong or the code is explicitly defining that macro itself somewhere.

You want _WIN32. See https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros for a list of predefined macros in Microsoft's compiler.

answered 2010-02-27T20:30:23.830

Your Answer