2011-02-02 52 views
1

我有一個爲linux編寫的應用程序,我也想讓它在windows下執行。那麼,如何在代碼中使特定行只在程序在Windows下運行時才能執行?我知道它使用#ifdef來服用點...謝謝windows和linux之間的可移植代碼

回答

6

您正在尋找:基於評論

#if defined(_WIN32) 
    // Your Windows specific code here 
#endif 

編輯:

有_WIN32的VS WIN32這裏商量好了:Whats the difference between the win32 defines

+0

根據http://msdn.microsoft.com/en-us/library/b0084kay.aspx,您需要一個領先的下劃線。 – 2011-02-02 20:36:58

0

我使用#ifdef _MSC_VER來知道它是否是微軟的編譯器,但我相信還有其他方法。

2

這取決於代碼。你也許可以重新編譯它並去。如果不是這樣,那麼在移植過程中所做的努力可能是微不足道的(這裏或那裏有一些小的細節),或者可能幾乎不可能(例如嘗試移植valgrind)。

在跳轉到使用#ifdef之前,請閱讀Henry Spencer's paper

+0

我起訴套接字,所以對於windwos我需要執行與WSAData廢話部分:) – Kobe 2011-02-02 20:41:54

0

通常#ifdef _WIN32,但#ifdef WIN32也有效。