我正在Linux(GCC 4.4.2)和Windows VS C ++ Express Edition 2008下编译
我目前正在Windows XP Pro 32位下进行编译,并将其添加到我的源代码中。
#if defined( WIN32 )
/* Do windows stuff here */
#endif
但是,if语句中的代码被禁用(变灰)。但是,如果我执行以下操作:
#if defined( _MSC_VER )
/* Do windows stuff here */
#endif
启用了if语句代码。
我只是想知道,我应该使用什么。我见过很多程序员都使用WIN32。但是,似乎对我不起作用。我应该使用_MSC_VER吗?
非常感谢任何建议,
答案 0 :(得分:10)
没有WIN32
。如果您已经看到它在其他地方使用过,那么它或者是错误的,或者代码是在某处明确定义宏本身。
你想要_WIN32
。有关Microsoft编译器中预定义宏的列表,请参阅https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros。
答案 1 :(得分:2)
这对我有用!
#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;
}
答案 2 :(得分:1)
改用_WIN32。 VS2008中的IntelliSense解析器很麻烦,这可能不一定能解决您的问题。它在VS2010中完全重写。