基于C++语言的跨平台软件开发的实现

2022-10-22 00:43:48   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《基于C++语言的跨平台软件开发的实现》,欢迎阅读!
C++,跨平台,软件开发,基于,语言
龙源期刊网 http://www.qikan.com.cn

基于C++语言的跨平台软件开发的实现

作者:孟旭光 狄建茹

来源:《祖国·建设版》2012年第12

在当下主流的编程语言当中,C++语言很好的保持高效的同时又加入了面向对象的特性以及自身的语言特性,但却不能像其他高级语言一样有着很好的可移植性,本文主要论述基于C++语言的多元化软件开发的设计与实现。 C++ 跨平台; 软件开发; 实现

【中图分类号】TP317.2 文献标识码:B文章编号:1673-8500201212-0050-02 一个跨平台软件产品的开发和实践,关键在于对于开发过程的整体设计,在实现平台无关的代码的基础上还要对软件的配置与架构有合理的设计。而开发公共代码的内容涉及到多方面的问题,从源文件的文件格式,到C/C++语言的代码设计。在跨平台开发的过程中,需要根据各个差异的类别,建立一个能够被重复调用的代码库,同时还要在程序的运行过程中进行必要的安全检查,动态的控制不同平台之间代码的使用。 1 C++语言跨平台的开发策略

在开始代码编写之前,首先要规定源代码在文本编写过程中的编辑策略,在不同的操作系统上创建和编辑文本文件必然涉及到多种类型的行结束符。当在这些平台之间编写源代码的时候,这就成为了一个问题。如果一个文件是在Unix下创建的,那么在Windows计算机上很可能不会被正确的编辑。此外,不同平台间tab的间距也有着不同的定义,因此在编写代码的过程中,需要规定统一的tab与行结束符,从而保证代码的阅读性在各个平台间都是相同的。所以在开发的初期需要针对这个问题制定两点规则: 1.1 统一使用4个空格键来代替tab,也就是\t格式

1.2 Windows下的源文件代码需要存储成Unix的文件格式,或是在Windows下的文件编写完成之后,通过dos2unix命令实现文本格式的转换。

目前来讲,这部分的问题还有一个更简易的解决方式:使用Emacs编辑器,Emacs虽然没有久远的历史,但是它已经迅速的得到了广泛的应用,原因在于其独特的开发方式,编辑人员几乎可以完全放弃使用鼠标而专心使用键盘来完成自己的代码,同时它对几乎任何一个平台都能给予很好的支持,同时非常易于安装,甚至有很多的开发人员视Emacs为一种编写源代码的理念,而远超于一个简单的编辑器。 2建立统一的工程


龙源期刊网 http://www.qikan.com.cn

一个多元平台下的软件产品在开发过程中需要保证各个源代码以及配置文件,依赖库的移植性,只有这样才可以做到:当一个Linux平台下开发的工程包被移植到另外一个平台上时,可以直接对其编译或者使用。否则,如果一个工程包在移植到其他平台以后还需要进行大规模的编辑这样不但影响了软件开发的进度,同时也会影响该项目在各个平台之间的一致性,长期的改动将会直接导致项目没有任何的维护性,因此,在整个开发周期中必须保证各个平台下所使用的开发工程包是完全统一的。

SandBox中包含这样几种文件夹,它们分别是一个封装好的代码库,它们专门用来处理那些平台相关的软件;源文件程序库,其中包含了该软件开发的源程序;第三方依赖库集合;另外就是配置文件集合和日志管理文件,当然,在各个文件夹中还会包含着Make策略所涉及到的各个Make文件。在它们其中,大部分的文件所完成的功能是统一的,只是根据不同的平台有着不同的规则而将它们区分开来,形成了多种配置文件和依赖文件。 3建立跨平台的代码库

由于C++语言的语言特性,以及其标准在各个平台、编译器上的不同定义,跨平台的软件开发需要更合理的规划代码,抽象是真正实现代码跨平台的核心,没有适当的抽象很难构建一个跨平台的应用程序。抽象C++里普遍的使用,c++的标准模板库和Boost是两个最好的例子。Boost标准类随着其不断地被完善,可以帮助一个跨平台的产品解决操作系统库内各个接口的差异,但是这些标准还不能够解决所有的问题,一方面它目前并没有涵盖所有的范畴,此外毕竟由于它们的封装,使项目又增加了不确定性,而在STL中并不是所有的模板都有着很高的可移植性,在可能的情况下,我个人更倾向于自己手动编写所需要的各个抽象类。进一步而言,就算这些标准库可以完全的被使用,然而这对于一个跨平台的软件项目来说还是远远不够的。所以,在项目开发过程中需要编写自己的抽象库,随着开发的不断进展,根据需求的变化结合C++语言的语言特性设计这部分代码。 4工厂模式与单例模式的实现

在跨平台开发的过程中,这两种设计模式的使用有着重要的意义,C++语言的代码有着诸多的特性不被多元化的平台所共享,因此,通常需要在代码库中抽象出这一部分的代码,然后分别在WindowsLinux平台下通过各自的方式实现功能,再通过条件编译来动态的调用不同平台下的函数;而单例模式则是为了保证每一个类的在程序中只有一个对象被实例化,防止过多的实例间产生的冲突。这两种设计模式的实现则需要利用面向对象的思想,通过继承来实现这种多平台的多态性,而除此之外,跨平台的工厂模式还需要利用条件编译来实现动态的调用。

5利用平台依赖库封装平台相关代码

在实际的开发过程中,对于应用程序的核心功能还可以在编译过程中通过链接不同的依赖库来处理C++语言跨平台开发过程中平台相关的代码。这种方法的核心在于把平台相关的各部


本文来源:https://www.dy1993.cn/2INx.html

相关推荐