在c++中编写跨平台程序时有哪些常见的缺陷?

What are some common pitfalls when making a program cross-platform in C++?

本文关键字:常见 缺陷 c++ 程序 跨平台      更新时间:2023-10-16

显然,我在之前的一个项目中做得足够好,所以我被交给了一个新的任务,即为Windows (xp和7)和Redhat/CentOS编写一个程序(用Visual Studio 2008编写)。我的目标是尽可能避免使用#ifndefs,并包含程序所需的尽可能多的库(不是太大,几千行)。

我遇到的一些直接问题是字符串操作和时间相关的函数。我还应该记住什么?

我发现用C编写跨平台程序的十项规则很有用。

既然你也在使用c++,我赞成尽可能多地使用Boost库的动议。除非另有说明,否则它们都是为跨平台而设计的。

总的来说,我不能强调避免难度的最佳方法是如何尽快在多个平台上运行,然后继续在所有平台上进行测试。解决任何平台问题都很容易,如果问题出现得早,单独地,并且在处理应用程序的特定方面时。只有当你不得不一次性处理所有的事情时,它才会成为一个问题。

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

Time通常以特定于平台的方式完成。

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

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

除此之外,任何处理文件路径的东西通常都是可疑的,斜杠走错了方向,大小写敏感,等等。

编辑:我还以为你是在移植一个应用,而不是从头开始写。如果你能勾勒出你的应用程序所做的事情,那将非常有帮助。

但是在一般使用std类或标准C函数时,如果你发现你在非平台特定文件的任何地方包含了"windows.h",你可能做错了什么,这是基本的理由。如前所述,可以使用boost,但对于只有1000行左右的程序,我怀疑您是否需要它。