在c++中编写跨平台程序时有哪些常见的缺陷?
What are some common pitfalls when making a program cross-platform in C++?
显然,我在之前的一个项目中做得足够好,所以我被交给了一个新的任务,即为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行左右的程序,我怀疑您是否需要它。
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 当基类是依赖类型时,这是一个缺陷吗
- C++如何在向量中查找最常见的元素
- Printf 命令不打印时添加了查找常见除数的新代码
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 如何从向量或数组中选择最常见的数字?(前五名)C++
- 这是 basic.def.odr 部分的缺陷吗?
- 打印二叉树中的常见元素
- 代码在 CodeSignal 中工作不正确。不确定这是否是我的代码缺陷
- 是否存在用于 C 或 C++ 中常见数学运算(例如最小值、最大值和平均值)的可导入库?
- 在 C++ 的自定义运算符中删除与删除[](不同于常见的删除与删除[]问题)
- 如何从文本文件中查找最常见的字母和出现次数?
- 对类的未定义引用,常见答案尚未解决
- 当子类需要在 c++ 中相互包含时,继承有缺陷
- 与纯 V8 相比,NodeJS 是否有任何性能缺陷或显著开销?
- 无法打印完整的二叉搜索树,因为我从最低节点向后迭代的逻辑有缺陷
- 查找字符串中最常见的字母
- 访问位域联合是C++标准中常见的初始数据未定义行为
- 抛出"bad_alloc"的最常见原因是什么?
- 在c++中编写跨平台程序时有哪些常见的缺陷?