在C ++中使用跨平台编程时有哪些常见的陷阱?

时间:2011-05-03 20:07:01

标签: c++ cross-platform

显然,我在previous project上做得很好,我已经完成了为Windows(xp和7)制作程序(用Visual Studio 2008编写)跨平台的新任务。红帽/ CentOS的。我的目标是尽可能避免使用#ifndefs并包含我所需的尽可能多的库(它不是太大,几千行)。

我遇到的一些直接问题是字符串操作和时间相关的功能。我还应该记住哪些其他事情?

2 个答案:

答案 0 :(得分:4)

我发现此文档Ten Rules for Writing Cross-Platform Programs in C很有用。

由于您也在使用C ++,因此我尽可能地使用Boost Libraries。除非另有说明,否则它们被设计为跨平台。

答案 1 :(得分:2)

总的来说,我不能强调如何避免让它变得困难的最佳方法是尽快让它在多个平台上运行,然后在所有平台上继续测试。解决任何平台问题很容易,无论是早期,单独出现,还是在处理应用程序的特定方面时。当你必须立即处理它时,它只会成为一个问题。

它完全取决于您使用的平台特定库。例如,我不希望字符串操作成为一个问题,因为我通常看到使用c字符串库完成。或std :: string。

以平台特定的方式完成时间非常普遍。

一些开发人员喜欢使用win32文件I / O.

程序是控制台程序吗?通常,UI工具包是一个大而难的工具包。

除此之外,处理文件路径的任何事情通常都是可疑的,斜线走错了,区分大小写等等。

编辑:我的印象是您正在移植应用,而不是从头开始编写。如果你勾勒出应用程序的功能,那将非常有用。

但是通常使用std类或标准C函数,如果你发现你在非平台特定文件中的任何地方都包含了“windows.h”,你可能做错了就是基本的。正如其他地方所提到的,你可以使用提升但是对于只有1000行左右的程序,你会怀疑它是否需要IMO。