2010-02-27 77 views
6

我编译的Linux(GCC 4.4.2)和Windows VS C++ Express Edition的2008使用宏WIN32或_MSC_VER跨平台

我目前在Windows XP专业版32位编译之下,已经加入这个我源代码。

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

但是,if语句中的代码被禁用(灰显)。但是,如果我执行以下操作:

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

if语句代码已启用。

我只是想知道,我应该使用什么。我见过很多程序员使用WIN32。但是,似乎并不适合我。我应该使用_MSC_VER吗?

非常感谢您的任何建议,

回答

1

改为使用_WIN32。 VS2008中的IntelliSense解析器很麻烦,这可能不一定能解决你的问题。它在VS2010中得到了完整的重写。

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; 
} 
+0

你好,欢迎来到StackOverflow。请以可读的方式格式化您的答案。编辑帖子时,您可以在侧栏上看到一些格式准则。 – Chaithanya 2016-08-28 20:34:08

+0

感谢您为我解决这个问题。我会确保下次正确格式化我的代码。 – 2016-08-29 14:58:24