C++ windows和linux之间的可移植代码

C++ windows和linux之间的可移植代码,c++,C++,我有一个为linux编写的应用程序,我想让它也在windows下执行。那么,我如何在代码中指定一行,使其仅在程序在windows下运行时执行?我知道这是我的错。。。谢谢您正在寻找: #if defined(_WIN32) // Your Windows specific code here #endif 根据评论进行编辑: 这里有一个很好的关于WIN32 vs WIN32的讨论:您正在寻找: #if defined(_WIN32) // Your Windows specifi

我有一个为linux编写的应用程序,我想让它也在windows下执行。那么,我如何在代码中指定一行,使其仅在程序在windows下运行时执行?我知道这是我的错。。。谢谢

您正在寻找:

#if defined(_WIN32)
    // Your Windows specific code here
#endif
根据评论进行编辑:

这里有一个很好的关于WIN32 vs WIN32的讨论:

您正在寻找:

#if defined(_WIN32)
    // Your Windows specific code here
#endif
根据评论进行编辑:


这里有一个很好的关于WIN32 vs WIN32的讨论:

我使用ifdef\u MSC\u VER来了解它是否是Microsoft编译器,但我确信还有其他方法。

我使用ifdef\u MSC\u VER来了解它是否是Microsoft编译器,但我确信还有其他方法。

这取决于代码。您可以重新编译它,然后继续。如果不是,移植所涉及的工作可能是微不足道的,这里或那里有一些小细节,或者几乎不可能,例如,尝试移植valgrind


在开始使用ifdef之前,请先阅读相关主题。

这取决于代码。您可以重新编译它,然后继续。如果不是,移植所涉及的工作可能是微不足道的,这里或那里有一些小细节,或者几乎不可能,例如,尝试移植valgrind


在开始使用ifdef之前,请先阅读相关内容。

通常使用ifdef\u WIN32,但ifdef WIN32也可以工作。

通常使用ifdef\u WIN32,但是ifdef WIN32也可以工作。

根据您需要一个前导下划线。根据您需要一个前导下划线。我正在起诉sockets,因此对于windwos,我需要使用WSAData crap执行该部分:@vBx:大多数sockets代码对于从Linux移植到Windows来说非常简单。您需要更改的主要内容是添加对WSAStartup和WSACleanup的调用。我通常会将这些代码与其他代码分开,并添加对init和cleanup的调用。将空的Linux版本保存在另一个文件中,并在makefile中选择要编译到应用程序中的版本。是的,我就是这样做的,我需要在windows中调用init和cleanup@vBx:否-我的重点是始终调用init和cleanup-但对于Linux,将它们实现为空函数。将Windows和Linux实现保存在单独的文件中,并让makefile决定使用哪一个。令人惊讶的是,20年前写的字今天仍然相关。我正在起诉sockets,因此对于WindWO,我需要使用WSAData crap执行部分:@vBx:大多数sockets代码对于从Linux到Windows的移植来说都非常简单。您需要更改的主要内容是添加对WSAStartup和WSACleanup的调用。我通常会将这些代码与其他代码分开,并添加对init和cleanup的调用。将空的Linux版本保存在另一个文件中,并在makefile中选择要编译到应用程序中的版本。是的,我就是这样做的,我需要在windows中调用init和cleanup@vBx:否-我的重点是始终调用init和cleanup-但对于Linux,将它们实现为空函数。将Windows和Linux实现保存在单独的文件中,并让makefile决定使用哪一个。令人惊讶的是,20年前写下的文字今天仍然相关。