为每个 OS 创建单独的项目还是将它们全部混合到一个项目中更好?
Is it better to create separate projects for each OS or mix them all into one project?
为每个 OS 创建单独的项目还是将 OS 特定代码混合到一个项目中更好?
例如,是继续在 C++ 中使用这些定义更好,还是完全绕过这些定义,对每个 OS 做不同的事情,但保持相同的实际最终结果和过程:
#ifdef __WIN32
// Do Windows stuff
#endif
我觉得管理和重构特定于每个 OS 的代码会容易得多,但它又会更加编译、调试和测试。
您还可以使用一些框架库,例如 Qt or POCO;他们给你一些单一的接口包装操作系统特定的调用。
我建议,如果你想自己做各种 OS 映射,定义一些通用的抽象并且只有很少的文件是 OS 特定的。到处都是 #ifdef LINUX
或 #ifdef _WIN32
是维护的噩梦。
当我必须为多个 OS 编写代码时,我在单独的模块中创建独立于 OS 的代码,并且 OS 特定的代码在单独的 [=25] 中处理=].
根据您的需要,您还可以查看 Qt
等跨平台库来处理特定于平台的代码。
使用 #ifdef
不是处理此问题的最佳方法,应尽可能避免。创建适当的 类 来抽象您的需求是可行的方法。
既然说的是项目,那是另外一个层次。您可以使用 CMake
等工具为各种平台创建构建环境。您可以 link 平台特定 类 您的代码,而无需更改您的主要代码。
为每个 OS 创建单独的项目还是将 OS 特定代码混合到一个项目中更好?
例如,是继续在 C++ 中使用这些定义更好,还是完全绕过这些定义,对每个 OS 做不同的事情,但保持相同的实际最终结果和过程:
#ifdef __WIN32
// Do Windows stuff
#endif
我觉得管理和重构特定于每个 OS 的代码会容易得多,但它又会更加编译、调试和测试。
您还可以使用一些框架库,例如 Qt or POCO;他们给你一些单一的接口包装操作系统特定的调用。
我建议,如果你想自己做各种 OS 映射,定义一些通用的抽象并且只有很少的文件是 OS 特定的。到处都是 #ifdef LINUX
或 #ifdef _WIN32
是维护的噩梦。
当我必须为多个 OS 编写代码时,我在单独的模块中创建独立于 OS 的代码,并且 OS 特定的代码在单独的 [=25] 中处理=].
根据您的需要,您还可以查看 Qt
等跨平台库来处理特定于平台的代码。
使用 #ifdef
不是处理此问题的最佳方法,应尽可能避免。创建适当的 类 来抽象您的需求是可行的方法。
既然说的是项目,那是另外一个层次。您可以使用 CMake
等工具为各种平台创建构建环境。您可以 link 平台特定 类 您的代码,而无需更改您的主要代码。