设为首页 加入收藏

TOP

9.9 其他移植性问题
2013-10-07 15:04:28 来源: 作者: 【 】 浏览:67
Tags:9.9 其他 移植 问题

9.9  其他移植性问题

平台之间的许多差异使C++(www.cppentry.com)源代码和创建过程(build procedure)的移植性变得更加复杂。在这里,一个还有问题的方面就是系统命令-例如,用于显示文件内容的命令,或者用于创建程序的命令(通常称为make或者build)。大多数平台都提供了一个或者多个命令行解释器,或者称为shell,在shell中就可以执行系统命令;而且,几乎每个shell都提供了它本身的编程(www.cppentry.com)语言。遗憾的是,平台的差异也使shell和系统命令的差异非常显著。即使相同名称的命令,但在不同的平台上,也可能做不同的事情,或者拥有不同的接口。系统命令之间的差异令可移植地使用标准C++(www.cppentry.com)库的函数系统的可能性几乎为0(函数系统传递一个字符串参数给操作系统,然后这个字符串被作为命令解释并执行)。在具有这些不一致性的平台之间,试图编写可移植的创建过程是很具挑战性的。

另一个源代码的可移植问题就是文件系统。许多平台都提供了一个层次化的文件系统。遗憾的是,文件系统的命名文件的语法多种多样。例如,在Unix系统下,为了在包含当前目录的dir目录下引用file1.c文件,我们可以使用:

  1. ../dir/fi1e1.c 

然而在VMS系统下,我们应该使用:
  1. [_.dir]file1.c 

而在Windows系统下,我们就必须这样使用:
  1. ..\dir\file.c 

这些区别影响了C++(www.cppentry.com)源代码和创建过程的可移植性,因为它们都要经常操作路径名称。例如,下面的代码
  1. #include"../dir/file1.h"  
  2.     //...  
  3.     ifstream f("../dir/file2.c");  

可能只对那些辨识UNIX系统路径语法的平台之间才是可移植的。为了提高代码的可移植性,某些平台可以辨识几种路径语法。例如,大多数(几乎所有)运行在Windows平台下的编译器都可以辨识Windows和UNIX的路径语法。

我们很少提及另一个可移植问题的来源:窗口系统。不同的平台会提供不同的窗口系统,并使用不同的应用程序编程(www.cppentry.com)接口(API)。试图编写对几个窗口系统都可以移植的代码也是非常困难的。某些程序库通过在几个窗口系统API上放置一个单一接口,来解决这个窗口系统问题。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇9.12 参考文献和相关资料 下一篇Imperfect C++中文版 译序一

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: