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

时间:2012-10-14 21:12:53

标签: c++ cross-platform

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

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

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

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

  5. 您保持平台独立性,您将不得不依赖第三方工具包。

    组织:

    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