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,
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://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros for a list of predefined macros in Microsoft's compiler.
This worked for me!
#if defined (_WIN32)
#define PLATFORM "Windows"
#elif defined (__linux)
#define PLATFORM "Linux"
#endif
#include <iostream>
using namespace std;
int main()
{
cout << PLATFORM << "System" << endl;
return 0;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With