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

What is the recommended way to organize platform specific code in C++?

本文关键字:代码 是什么 方法 平台 C++ 于平台      更新时间:2023-10-16

如果我想为多个平台(例如Windows和Linux)编写C++应用程序,建议编写平台代码的方法是什么?存在什么模式、类层次结构等来完成此任务?我应该如何组织我的代码、头文件和源文件?

我不完全理解您的问题,但通常您应该将平台相关代码与平台独立代码分开。 例如,您可能有一个文件夹platform,其中有一个您支持的每个平台的文件夹,然后您可能有win32/mutex.hpplinux/mutex.hppmac/mutex.hpp,并且在每个文件夹中,您可以为该平台添加互斥锁的实现。然后,您所需要的只是一个基于平台选择正确文件并包含它的选择器标头。例如,在正确的平台中包含任何指定文件的platform/mutex.hpp

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

  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