如果我想为多个平台编写我的C ++应用程序,例如Windows和Linux,编写平台代码的推荐方法是什么?有什么模式,类层次结构等来完成这项任务?我应该如何组织我的代码,标题和源文件?
答案 0 :(得分:5)
我没有完全解答您的问题,但通常您应该将平台相关代码与平台无关代码分开。例如,您可能有一个文件夹platform
,并且在其中包含您支持的每个平台的文件夹,那么您可以拥有win32/mutex.hpp
,linux/mutex.hpp
,mac/mutex.hpp
他们可以为该平台添加互斥锁的实现。然后你需要的是一个基于平台选择正确文件并包含它的单选择器头。例如platform/mutex.hpp
包含正确平台中的任何指定文件。
但除此之外,请看一下boost
它以独立于平台的方式实现许多与平台相关的代码,您可以从中学习,并且您可能会看到在那里实现与平台相关的代码!!
答案 1 :(得分:4)
确保您不使用COMPILER特定扩展,或至少坚持1 SINGLE编译器(推荐:G ++是跨平台的)
首先遵循这些。模式只是组织代码的手段。语言允许的标准模式理论上在所有平台上保持不变,因此不应成为问题的一部分
使用#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