2010-02-27 76 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