C ++跨平台代码
我们将在我们的小团队中开始一个新项目:
不幸的是,我们的开发者中没有一个在Windows以外的任何平台上编写过任何代码! 因此,我必须给他们一个“这样的代码”或“不是这样的代码”列表,所以代码将保持跨平台。
任何指导?
增加可移植性的一种方法是在两个平台上使用相同的编译器GCC。 如果您还使用相同的编译器版本,则可能会避免大部分(如果不是全部)C ++语言和标准库不兼容。 您也可以使用相同的构建工具,如GNU make,这意味着构建过程在两个平台上都是相同的。
至于平台不兼容性 - 请检查他们的代码是否包含如下内容:
#include <windows.h>
#include <unistd.h>
#include <sys/almost_anything.h>
除非这是通过条件编译完成的。
确保您在所有平台上都有自动构建过程,并编写单元和自动功能测试。 如果可能的话,运行夜间自动构建和测试。 当你编写跨平台的库时,这更重要。
我会做相反的其他答案之一(并非我认为这是错误的,只是一种不同的方法),如果你可以选择你的平台使他们尽可能不同。 例如,在unix上创建一个32位MCVC和另一个64位gcc。 如果你可以进行自动化测试和构建,那么这将很快显示可移植性问题。
如果可能的话,一些开发人员在一个平台上工作,另一些人在另一个平台上工作,而不是在一个平台上完成代码,然后将其“移植”到另一个平台上。 这样他们就会很快学会在他们的同事过来抱怨他们弄坏了什么时不该做什么。
技术上要注意的是
最重要的是:在所有支持的平台上始终运行自动构建和测试,以便立即获取大多数不可移植(或错误)的代码。
语言本身,标准库和Boost应该可以移植到任何广泛使用的平台(当然是现代版本的Linux / GCC和Windows / MSVC)。 怀疑以.h
结尾的任何系统头文件,并在决定使用它们之前检查其他库的可移植性。
保持一份所遇到的所有不兼容的文件,希望你只会犯一次错误。
链接地址: http://www.djcxy.com/p/54545.html下一篇: Finding current executable's path without /proc/self/exe