2011-02-02 83 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也有效。