ant2009 ant2009 - 1 month ago 7x
C Question

Using macros WIN32 or _MSC_VER cross-platform

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 */

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 */

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,


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 for a list of predefined macros in Microsoft's compiler.