1、可移植性并不是指所写的程序不作修改就可以在任何计算机上运行,而是指当条件有变化时,程序无需作很多修改就可运行。
2、 你不要把“我不会遇到这种情况”这句话说得太早。直到MS—Windows出现之前,许多MS—DOS程序员还不怎么关心可移植性问题。然后,突然之间,他们的程序不得不在一个看起来不同的操作系统上运行。当Power PC流行起来后,Mac机的程序员不得不去应付一个新的处理器。任何一个在同版本的UNIX下维护过程序的人所了解的可移植性的知识,恐怕都足以写成一本书,更别说写成一章了。
3、 假设你用基本ALBATR—OS(Anti-lock Braking and Tire Rotation operating system)的Tucker C来编写防抱死刹车软件,这听起来好象是一个最典型的不可移植软件。即便如此,可移植性仍然很重要:你可能需要把它从Tucker C的7.55c版本升级到8.O版本,或者从ALBATR—OS的3.o版本升级到3.2a版本,以修改软件中的某些错误;你也可能会出于仿真测试或宣传的目的,而把它(或其中一部分)移植到MS-Windows或UNIX工作站上;更为可能的是,在它尚未最终完工之前,你会把它从一个程序员手中交到另一个程序员手中。
(资料图片)
4、 可移植性的本意是按照意料之中的方式做事情,其目的不在于简化编译程序的工作,而在于使改写(重写!)程序的工作变得容易。如果你就是接过别人的程序的“倒霉蛋”,那么原程序中的每一处出乎意料之外的地方都会花去你的时间,并且将来可能会引起微妙的错误。如果你是原程序的编写者,你应该注意不要使你的程序中出现出乎接手者意料之外的代码。你应该尽量使程序容易理解,这样就不会有人抱怨你的程序难懂了。此外,几个月以后,下一个“倒霉蛋”
5、很可能就会是你自己了,而这时你可能已经忘记了当初为什么用这样复杂的一种方式来写一个for循环。
6、 使程序可移植的本质非常简单:如果做某些事情有一种既简单又标准的方法,就按这种方法做。
7、 使程序可移植的第一步就是使用标准库函数,并且把它们和ANSI/ISO C标准中定义的头文件放在一起使用,详见第11章“标准库函数”。
8、 第二步是尽可能使所写的程序适用于所有的编译程序,而不是仅仅适用于你现在所使用的编译程序。如果你的手册提醒你某种功能或某个函数是你的编译程序或某些编译程序所特有的。你就应该谨慎地使用它。有许多关于c语言编程的好书中都提出了一些关于如何保持良好的可移植性的建议。特别地,当你不清楚某个东西是否会起作用时,不要马上写一个测试程序来看看你的编译程序是否会接受它,因为即使这个版本的编译程序接受它,也不能说明这个程序就有很好的可移植性(C++程序员比c程序员应该更重视这个问题)。此外,小的测试程序很可能会漏掉要测试的性能或问题的某些方面。
9、 第三步是把不可移植的代码分离出来。如果你无法确定某段程序是否可移植,你就应该尽快注释出这一点。如果有一些大的程序段(整个函数或更多)依赖于它们的运行环境或编译方式,你就应该把其中不可移植的代码分离到一些独立的“.c”文件中。如果只在一些小的程序段中存在可移植性问题,你可以使用#ifdef预处理指令。例如,在MS-DOS中文件名的形式为“\tools\readme”,而在UNIX中文件名的形式为“/tools/readme”。如果你的程序需要把这样的
10、文件名分解为独立的部分,你就需要查找正确的分隔符。如果有这样一段代码
11、 #ifdef unix
12、 #define FILE_SEP_CHAR/
13、 #endif
14、 #ifdef __MSDOS__
15、 define FILE SEP CHAR\
16、 #endif
17、 你就可以通过把FILE_SEP_CHAR传递给strchr()或strtok()来找出文件名中的路径部分。尽管这一步还无法找出一个MS-DOS文件的驱动器名,但它已经是一个正确的开头了。
18、 最后,找出潜在的可移植性问题的最好方法之一就是请别人来查找!如果可以的话,最好请别人来检查一下你的程序。他或许知道一些你不知道的东西,或许能发现一些你从未想过的问题(有些名称中含"lint"的工具和有些编译程序选项可以帮助你找出一些问题,但你不要指望它们能找出大的问题)。
以上就是【可移植性什么意思,可移植性】相关内容。
1、可移植性并不是指所写的程序不作修改就可以在任何计算机上运行,...
杜兰特谈篮网三巨头失败的原因,无所谓了,祝他们顺利,哈登,三巨头,...
威少最佳选择是哪?美媒锐评4大下家!快船不适配重回奇才排第一,威...
高效砍13分7助攻,火箭又白送大礼,快船收获第二阵容新核心,火箭,快...
电竞酒店现800条未成年人开房记录今天的热度非常高,现在也是在热搜...
据研究显示,目前中国失眠人数已突破4 1亿,中国是世界上失眠人数...
(来源:青岛工会)关注我们获得更多精彩内容为积极响应“健康中国2...
直径10钢筋理论重量,钢筋理论重量000617这个很多人还不知道,现在让...
陈美嘉第二季为什么不在,陈美嘉这个很多人还不知道,现在让我们一起...
高空安全带使用方法是什么,高空安全带使用方法这个很多人还不知道,...
英超官方统计了球员本赛季的助攻次数,曼城中场德布劳内以12次助攻...
高空安全带的正确使用方法是高挂低用,高空安全带的正确使用方法这...
离开皇马之后,法国足坛传奇齐达内曾和巴黎圣日耳曼以及法国国家队...
pccw是什么,pccw是什么意思这个很多人还不知道,现在让我们一起来看...
直播吧2月17日讯 LPL2023春季赛第五周第五日的首场比赛,由LGD对阵...
LPL春季赛LGDvsNIP的第一局定格在51分07秒,也打破了此前本赛季最长...
据体育博主“莱斯特城的小狐狸”报道,广州城小将苏宇亮正在贝尔格...
今天是一线队冬训的第二天,球队继续进行体能训练。下午两点半,球...
今日UP英雄联盟分部官博更新,发布2023LPL春季赛常规赛对阵LGD的队...
2023KPL春季赛,今日第二场比赛是由北京WB对阵到MTG!【bp】蓝色方M...
在2023年LPL春季赛LGD对阵NIP的首局比赛中,haichao卡萨丁孤身诱敌...
NBA全明星周末来临!今年有什么看点呢?,韦德,nba,热火队,奥尼尔,全...
萧华回应杜欧要求离队:球员流动是健康的但申请交易是一件坏事,交易...
巴克利:快船可能会赢得总冠军,要么就可能首轮被淘汰,快船队,法国...
快船过去两场场均31次助攻,本场前场均仅22 8次助攻,虎扑,力克,快...
12连胜,14连败!绿军别大意,湖人别泄气,NBA要变天了,绿军,马刺队...
截至2023年2月17日收盘,德邦股份(603056)报收于19 3元,较上周...
最新消息:吉林四平02月17日15时疫情数据阳了以后为什么咳嗽越来越...
最新消息:吉林松原02月17日15时疫情数据阳了以后为什么咳嗽越来越...
最新消息:江苏宿迁02月17日15时疫情数据阳了以后为什么咳嗽越来越...
广告
X 关闭
广告
X 关闭