MBZ*_*MBZ 5 c++ cross-platform
我们将在我们的小团队中开始一个新项目:
不幸的是,我们的开发人员没有在Windows之外的任何其他平台上编写任何代码!因此,我必须给他们一个"像这样的代码"或"不像这样的代码"列表,所以代码将保持跨平台.
任何指导?
小智 10
增加可移植性的一种方法是在两个平台上使用相同的编译器GCC.如果您也使用相同的编译器版本,则可能会避免大多数(如果不是全部)C++语言和标准库不兼容.您也可以使用相同的构建工具,例如GNU make,这意味着构建过程在两个平台上都是相同的.
至于平台不兼容性 - 检查他们的代码是否包含如下:
#include <windows.h>
#include <unistd.h>
#include <sys/almost_anything.h>
Run Code Online (Sandbox Code Playgroud)
除非这是通过条件编译完成的.
确保在所有平台上都有自动构建过程,并编写单元和自动功能测试.如果可能的话,运行自动夜间构建和测试.在编写跨平台库时,这一点非常重要.
我会做其他一个答案的反面(不是我认为这是错误的,只是一种不同的方法)并且如果你可以选择你的平台使它们尽可能地不同.例如,在unix上创建一个32位MCVC和另一个64位gcc.如果您可以进行自动化测试和构建,那么这将很快显示可移植性问题.
如果可能的话,让一些开发人员在一个平台上工作而在另一个平台上工作,而不是在一个平台上完成代码,然后将其"移植"到另一个平台上.通过这种方式,当他们的同事过来抱怨他们弄坏了什么时,他们会很快学会不该做什么.
技术上要注意的事情是
最重要的是:在所有支持的平台上运行自动构建和测试,以便立即获取大多数不可移植(或错误)的代码.
语言本身,标准库和Boost应该可以移植到任何广泛使用的平台(当然是现代版本的Linux/GCC和Windows/MSVC).怀疑任何结束的系统头文件.h,并在决定使用它们之前检查其他库的可移植性.
保存一份你遇到的所有不兼容性的文件,所以希望你只会犯下一次错误.
告诉他们不要使用Windows API,他们应该好好去.
我还建议增加你的警告/错误级别,如果在Visual Studio中开发,因为它会阻止你做一些gcc(通常)不允许的事情,假设你正在使用gcc来编译Linux.您还可以在项目设置中禁用Visual Studio扩展.
显然,如果有人需要使用特定于平台的东西,他们应该使用定义来替换特定于平台的代码,具体取决于它正在编译的平台.
| 归档时间: |
|
| 查看次数: |
1882 次 |
| 最近记录: |