- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第25章
开发跨平台和跨语言的应用程序
本章内容
● 如何编写在多个平台上运行的代码
● 如何混合使用不同的编程语言
C++程序可以编译为运行在不同的计算平台上,这个语言的定义严格,确保了在一个平台上用
C++编程非常类似于在另一个平台上用C++编程。然而,尽管语言是标准化的,但是在编写专业水
准的C++程序时仍然需要考虑平台的差异。即使开发限定于特定平台,编译器之间微小的差别也会
引发编程中令人感到头疼的问题。本章将深入研究多平台和多编程语言编程的复杂性。
本章第一部分考察了C++程序员会遇到的与平台相关的问题。一个平台是构成开发环境和运行
时系统的所有细节的集合。例如,您的平台可能是运行在Windows 7 上的Microsoft Visual C++ 2010
编译器,其中处理器为Intel Core i7 处理器。另外,您的平台也可能是运行在Linux 上的GCC 4.6
编译器,其中处理器为PowerPC。这些平台都能够编译和运行C++程序,但它们之间存在显著差异。
本章的第二部分探讨C++可以如何与其他编程语言交互。尽管C++是一个通用的编程语言,但
是并不一定适合于所有任务。通过各种机制,可将C++和其他语言集成在一起,以便更好地满足自
己的需要。
25.1 跨平台开发
因为一些原因,C++语言会遇到平台的问题。尽管C++是一个高层次的语言,但是C++的定义
包括了低层次的实现细节。例如,C++数组定义为存在于连续的内存块中。由于并不是所有系统都
采用同样的方式安排和管理内存,所以这样一个特定的实现细节使得这个语言暴露于不利的情况。
C++还面临一个挑战:提供了一个标准的语言和一个标准的库,但是没有一个标准的实现。不同C++
编译器和库的提供商对规范理解的不同使得一个系统到另一个系统的迁移变得困难。最后,C++对
于语言提供什么作为标准具有选择性。尽管存在一个标准库,但是复杂程序往往需要采用语言或标
准库没有提供的功能。这些功能一般来自第三方库或平台,而且可能差别巨大。
第Ⅳ部分 C++软件工程
25.1.1 硬件架构问题
硬件架构这个词通常指的是运行程序的处理器或一族处理器。运行Windows 或Linux 的标准PC
通常运行在x86 架构上,较老版本的Mac OS 通常运行在PowerPC 架构上。作为一门高级语言,C++
屏蔽了这些硬件架构之间的差异。例如,Pentium 处理器可能有一条指令需要用6 条PowerPC 指令
才能实现同样的功能。作为一名C++程序员,您不需要理解这个差异,甚至不需要知道存在这种差
异。使用高级语言的一个优势是:编译器会负责将您的代码转换为处理器原生的汇编代码格式。
然而,处理器的区别有时候会上升到C++代码的层次。除非您在完成最底层的编码工作,否则
您基本上不会面对这些问题,但是您应该意识到这些问题的存在。
1. 二进制兼容性
您可能已经知道,不能将为Pentium 计算机编写和编译的代码放在基于PowerPC 的Mac 计算机
上运行。这两个平台没有二进制兼容,因为这两个平台的处理器不支持同一个指令集。当您编译一
个C++程序的时候,您的源代码被转换为计算机执行的二进制指令。这个二进制指令的格式是由平
台定义的,而非由C++定义。
支持二进制不兼容平台的一种方法是利用不同目标平台的编译器分别生成每一个版本。
另一个解决方案是交叉编译。例如您使用平台X 作为开发平台,但是您需要让您的程序运行在
平台Y 和Z 上,您可以在平台X 上使用交叉编译器生成平台Y 和Z 的二进制代码。
您也可以开放您的程序的源代码。通过向最终用户提供源代码,用户可以在自己的系统上原生
地编译代码,并构建一个适合计算机的正确二进制格式的版本。根据第2 章中所讨论的,开源软件
已经越来越受欢迎。主要原因之一就是开源软件允许程序员合作开发软件,增加软件可以运行的平
台数。
2. 地址大小
当有人描述一个硬件架构是32 位的时候,他们最有可能说的是地址大小为32 位,也就是4 字
节。在一般情况下,具有更大地址空间的系统可以处理更多内存,并且可以更快地处理复杂程序。
由于指针是内存地址,所
文档评论(0)