1

到目前为止,我在 C++ 中的所有开发都针对 Windows,但是我一直在想,有一天我会以 Linux 为目标。因此,我知道需要选择跨平台库,并尽可能保持我的代码可移植(或为不可移植的代码提供替代实现)。因此,这个问题与代码编译问题无关。

我想知道,开发人员在同时针对 Linux 和 Windows 时会面临哪些常见问题?特别是但不限于:

  1. 处理配置文件的最佳实践。在 Windows 上,这似乎是相当随意的——我见过软件将它们的配置存储在程序文件夹、用户文件夹(在 appData 下)和注册表中。在 Linux 上,它似乎更倾向于专用配置文件夹 (/etc)。我应该如何处理我的代码中的这些差异?我是对位置进行硬编码,还是可以参考一些系统定义的功能?

  2. 与 (1) 相同,但用于记录。

  3. 如何让我的项目文件保持同步?例如,如果我更新 Visual Studio 项目文件中的某些内容,我通常是否需要在我正在工作的任何 Linux 环境中手动更新等效的内容,或者是否有避免这种情况的常用方法?

  4. 在我的代码中处理平台实现差异的最佳方法是什么?我应该使用#ifdefs,还是应该将特定于平台的代码保存在单独的文件中,并让项目指定包含哪些文件?

  5. 还有什么我没有想到我应该开始考虑/研究的吗?

4

2 回答 2

2

您可以使用 s 完成艰苦的工作,#ifdef也可以使用跨平台库,例如 Qt,它几乎可以解决您的所有问题。

5 - 你也应该注意行尾、文件编码和路径分隔符。

于 2013-01-14T20:08:09.580 回答
0

对于 1 和 2,我认为最好的方法是将日志和配置文件存储在程序文件夹或另一个相对位置,并以这种方式使它们可移植。

5. - 初始化也可能是一个问题。未初始化的变量可能会出现。

于 2013-01-14T20:07:55.793 回答