在C++中组织特定于平台的代码的推荐方法是什么?

tyr*_*dis 5 c++ cross-platform

如果我想为多个平台编写我的C++应用程序,例如Windows和Linux,那么编写平台代码的推荐方法是什么?有什么模式,类层次结构等来完成这项任务?我应该如何组织我的代码,标题和源文件?

Big*_*oss 5

我没有完全解答您的问题,但通常您应该将平台相关代码与平台无关代码分开.例如,你可能有一个文件夹platform和里面为你所支持的每个平台的文件夹,那么你可能有win32/mutex.hpp,linux/mutex.hpp,mac/mutex.hpp和他们每个人的您也可以添加实施互斥的该平台.然后你需要的是一个基于平台选择正确文件并包含它的单选择器头.例如platform/mutex.hpp,包括正确平台中的任何指定文件.

但除此之外,看看boost它以独立于平台的方式实现许多平台相关代码,你可以从中学习,你可能会看到你的平台相关代码的实现!

  • 你为什么要重新发明轮子? (2认同)

Ani*_*nge 5

  1. 坚持 C++ ISO 规范定义的标准。
  2. 使用 PLATFORM 独立库(如 Boost 和 Qt 和 Fltk)
  3. 确保您不使用特定于编译器的扩展,或至少坚持使用 1 个单一编译器(推荐:跨平台的 G++)

    首先遵循这些。模式只是组织代码的手段。一种语言允许的标准模式理论上在所有平台上都保持不变,因此这不应该是问题的一部分

  4. 使用 #ifdef MACROS 编码平台特定的文件路径、平台特定的网络库等。

您越是保持平台独立,您就越需要依赖第三方工具包。

组织:

FOLDERS: program
         |_plaf
         |_headers
         |_source
         |_makescripts

plaf
|_win32 //contains windows specific wrapper functions in header files
|_unix  //contains unix specific wrapper functions in header files

headers: //contains platform independent headers
lib: //contains platform independent static libraries
sources: //contains .h and .cxx(or .cc or .cpp) files. ONE file per class with main function in main.cxx
Run Code Online (Sandbox Code Playgroud)