李俊超
摘 要 C++作为一种主流的编程语言,不仅继承了C语言的编程效率,而且拓展了自身的语音特性,例如模板、泛型编程等,因此几乎所有的平台都支持C++语言,并得到了广泛地应用,然而在不同的平台下,C++语言内部变量的定义和扩展功能却不尽相同,这就给跨平台软件的设计开发带来了很大的困难。本文简要叙述跨平台概念,并对C++跨平台的开发的影响因素以及设计实现进行分析,提供了一些想法思路,希望能对跨平台软件的开发起到一定的推动作用。
关键词 C++语言 跨平台 软件开发 设计实现
中图分类号:TP31 文献标识码:A
20世纪70年代,Bell实验室首先开发了C语言系列,经过十年的演化变迁,80年代C++语言便应运而生。C++语言是C语言的改良进化版本,除了沿用C语言直接运行在机器上,不需要虚拟机作为中介的高效率特点之外,根据软件开发的需求还融入了虚函数、模板、操作符重载等特性功能,因此C++语言得到了特别广泛地应用。C++语言几乎所有的平台下进行使用,然而在不同平台之间的应用时却难以兼容,随着多元化软件系统开发的需求日益增加,如何在软件开发中设计并实现C++语言跨平台的方案将会是今后工作的重点。
跨平台是软件开发中的常用概念,指的是在一个操作平台Windows设计开发的应用程序在另一个操作平台Linux下同样能够使用运行,二者完全兼容。随着当前软件工程的迅猛发展,跨平台的软件开发能够给应用程序本身带来巨大的市场潜力,与此同时,如果应用软件针对不同的CPU提供并测试各自的编译版本,再发布到各自平台上而产生不同的软件版本,這样的工作量是特别庞大的,因此,跨平台的开发致力于是应用程序几乎不做修改就能运用到不同的平台上。
1跨平台软件开发的影响因素
在C++语言跨平台软件开发过程中,除了各个平台间差异性和兼容性之外,C++语言自身的特性以及编译环境对其都有影响,无形之中加大了跨平台软件开发的难度。
(1)不同平台之间的差异性
软件开发中的编程语言并不能直接地作用于计算机硬件设备,它们需要调用系统的API接口来实现对计算机的控制操作,然而目前许多操作平台的API接口都有自己的标准,并且相互之间差异性较大,例如Windows系统和Unix系统之间的API接口的实现方式和实现原理都不一样,这就在很大程度上阻碍了同一款软件应用于不同平台。在实际开发过程中,操作平台的差异性会贯穿始终,从设计、代码编写到最终测试都会涉及。
(2)编译器的定义不同
编译器的主要功能是根据特定的语言定义将源代码转变成为可执行控制的指令,它显然和C++语言的跨平台应用有着十分巨大的关联,由于语言定义的不同,同一种源代码在不同的编译器中最终得到的控制指令也不尽相同,这也就造成了跨平台软件开发难以开展实现。例如目前Windows平台上的Visual Studio C++编译器和Linux平台上的GCC编译器适用于C++程序代码的编译,然而由于C++的许多语言特性的实现细节都留给了编译器开发商,每个开发商对编译器的定义不同,从而致使C++源代码不能跨平台编译。
(3)编译系统的不同
编译系统可以简单到一个执行编译器和连接器的命令脚本,也可以复杂到整个命令程序的生成。跨平台的软件开发必须要使用一个统一标准的编译系统,这样才能达到对程序代码执行的一致性。例如Windows系统下的Visual Studio和Apple的Interface Builder编译系统完全束缚了跨平台编译系统的开发,这两者之间的编译定义、指令执行都有着十分巨大的差别,往往同一个源代码在各编译系统中得到的编译结果也完全不同,这也就导致跨平台软件开发无从谈起。
2 C++语言跨平台软件开发的设计实现
C++语言跨平台软件开发的实现还存在着一些因素的阻碍,因此,采取何种方法措施清除这些影响因素是实现跨平台软件开发的关键。
(1)避免语言的扩展特性
许多语言为了满足软件开发的需求,往往会增添新的扩展特性,然而新的特性由于缺乏长期的实践性和规范性,经常出现没有被确切测试和精确定义的意外情况,其中常常包含着许多的异常漏洞和非标准内容,另外跨平台开发对于程序的异常十分敏感,稍有瑕疵就难以排除障碍,因此,在实际的软件开发过程中应当使用C++的标准特性而避免使用其扩展特性。
(2)建立跨平台代码库
在跨平台软件开发过程中,通常会遇到某些特性定义一个平台上有而另一个平台上没有的问题,例如Windows平台有树形控件和递归互斥体,DOS下没有线程,Linux下的线程是依据进程来实现,因此这就需要建立跨平台代码库来解决这一问题,通过建立一套完善的跨平台代码库来实现某些特性统一化。
(3)采用脚本文件进行管理
一般来说,软件开发过程中将会编写大量的代码,特别是涉及到跨平台领域时,这一问题就显现地格外严重,因此为了是代码编写更加简单明了,通常使用脚本文件进行管理。利用脚本文件在程序编译之前将相关文件从中剥离出来,并分配到合适的位置上,然后再应用程序的运行过程中,再从配置文件中读取所需要的配置选项,另外在软件开发过程中要尽量隔离平台依赖程度较高的文件格式,而是采用脚本文件来进行可控管理。
总而言之,随着广大用户对软件便利性和实用性功能的渴求,跨平台软件开发设计将会成为软件工程中的一门重要分支,同时也将是今后软件工程发展的方向趋势。
参考文献
[1] 罗莎.计算机中C语言的应用特点分析[J].计算机光盘软件与应用,2012(05).
[2] 杨鹏.基于C++语言的跨平台软件开发的设计[J].硅谷,2014(02).