C语言中,可移植性是什么意思啊?

作者&投稿:居叛 (若有异议请与网页底部的电邮联系)
C语言可移植性强具体指什么?~

“偶是队长”见多识广,所言极是!!C语言的“可移植性强”是和汇编语言相比而言的。早期计算机没有统一的操作系统,程序员要直接对硬件编程,不同计算机的汇编指令集各不相同,为一个计算机编写的程序要想移植到另一台计算机上运行,要根据具体计算机的指令集进行大量修改。C语言因为可将源程序为不同计算机编译成不同的二进制程序,而无须修改C语言源程序,对于编程者来说,就是提高了可移植性。现在有了成体系的操作系统,这个档次的可移植性就没什么优势可言了。当前环境下,可移植性高的语言当属JAVA,口号是“一处编程,处处运行”,在不修改源代码的情况下,程序可以跨操作系统运行。由于JAVA的娘家SUN公司还不够强势,事实上更换到某些平台时,操作系统厂商各自为政,某些代码移植时还是要进行一点修改的,不过SUN正致力于形成更强势的标准来解决这类问题。而它的竞争对手微软公司,也正在致力于形成另一套标准来打破SUN的统一标准。欲知后事如何,且看市场分解。

就是可以在不同的平台上用,而改动的代码是一部分,其实是分模块编程,把不会变的一类写到一起

能移植的

可移植性并不是指所写的程序不作修改就可以在任何计算机上运行,而是指当条件有变化时,程序无需作很多修改就可运行。
你不要把“我不会遇到这种情况”这句话说得太早。直到MS—Windows出现之前,许多MS—DOS程序员还不怎么关心可移植性问题。然后,突然之间,他们的程序不得不在一个看起来不同的操作系统上运行。当Power PC流行起来后,Mac机的程序员不得不去应付一个新的处理器。任何一个在同版本的UNIX下维护过程序的人所了解的可移植性的知识,恐怕都足以写成一本书,更别说写成一章了。
假设你用基本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工作站上;更为可能的是,在它尚未最终完工之前,你会把它从一个程序员手中交到另一个程序员手中。
可移植性的本意是按照意料之中的方式做事情,其目的不在于简化编译程序的工作,而在于使改写(重写!)程序的工作变得容易。如果你就是接过别人的程序的“倒霉蛋”,那么原程序中的每一处出乎意料之外的地方都会花去你的时间,并且将来可能会引起微妙的错误。如果你是原程序的编写者,你应该注意不要使你的程序中出现出乎接手者意料之外的代码。你应该尽量使程序容易理解,这样就不会有人抱怨你的程序难懂了。此外,几个月以后,下一个“倒霉蛋”
很可能就会是你自己了,而这时你可能已经忘记了当初为什么用这样复杂的一种方式来写一个for循环。
使程序可移植的本质非常简单:如果做某些事情有一种既简单又标准的方法,就按这种方法做。
使程序可移植的第一步就是使用标准库函数,并且把它们和ANSI/ISO C标准中定义的头文件放在一起使用,详见第11章“标准库函数”。
第二步是尽可能使所写的程序适用于所有的编译程序,而不是仅仅适用于你现在所使用的编译程序。如果你的手册提醒你某种功能或某个函数是你的编译程序或某些编译程序所特有的。你就应该谨慎地使用它。有许多关于c语言编程的好书中都提出了一些关于如何保持良好的可移植性的建议。特别地,当你不清楚某个东西是否会起作用时,不要马上写一个测试程序来看看你的编译程序是否会接受它,因为即使这个版本的编译程序接受它,也不能说明这个程序就有很好的可移植性(C++程序员比c程序员应该更重视这个问题)。此外,小的测试程序很可能会漏掉要测试的性能或问题的某些方面。
第三步是把不可移植的代码分离出来。如果你无法确定某段程序是否可移植,你就应该尽快注释出这一点。如果有一些大的程序段(整个函数或更多)依赖于它们的运行环境或编译方式,你就应该把其中不可移植的代码分离到一些独立的“.c”文件中。如果只在一些小的程序段中存在可移植性问题,你可以使用#ifdef预处理指令。例如,在MS-DOS中文件名的形式为“\tools\readme”,而在UNIX中文件名的形式为“/tools/readme”。如果你的程序需要把这样的
文件名分解为独立的部分,你就需要查找正确的分隔符。如果有这样一段代码
#ifdef unix
#define FILE_SEP_CHAR/
#endif
#ifdef __MSDOS__
define FILE SEP CHAR\\
#endif
你就可以通过把FILE_SEP_CHAR传递给strchr()或strtok()来找出文件名中的路径部分。尽管这一步还无法找出一个MS-DOS文件的驱动器名,但它已经是一个正确的开头了。
最后,找出潜在的可移植性问题的最好方法之一就是请别人来查找!如果可以的话,最好请别人来检查一下你的程序。他或许知道一些你不知道的东西,或许能发现一些你从未想过的问题(有些名称中含"lint"的工具和有些编译程序选项可以帮助你找出一些问题,但你不要指望它们能找出大的问题)。


什么是c语言的可移植性?
在计算机领域,可移植性(portability)是指软件的能力,在不同的计算机系统、操作系统或硬件平台上运行。C 语言是一种通用的、高级的编程语言,可以被编译成机器语言,在不同的计算机系统上运行。这种可移植性是 C 语言非常流行的原因之一。但是,C 语言也有一些不可移植的特性,例如:不同的计算机系统...

C语言中,可移植性是什么意思啊?
就是可以在不同的平台上用,而改动的代码是一部分,其实是分模块编程,把不会变的一类写到一起

请给我解释下 计算机软件的可移植性 是什么意思 它的原理是什么?举例子...
软件可移植性是指代码可以在不同平台间移植,硬件移植性是指在不同硬件间(如不同构架的CPU)移植。 我们一般说的软件的可移植性指的是软件可移植性,简单的说就是指源代码到不同的平台下(不同的操作系统,例如从Windows下移到Linux下)时,需要修改的内容越少,移植性越好。 如果是编译好的程序那...

可移植性是什么意思
软件可移植性指与软件从某一环境转移到另一环境下的难易程度。为获得较高的可移植性,在设计过程中常采用通用的程序设计语言和运行支撑环境。尽量不用与系统的底层相关性强的语言。其质量子特性有:适应性、易安装性、共存性、易替换性和依从性。可移植性并不是指所写的程序不作修改就可以在任何计算...

程序的可读性,和可移动性是指什么
可读性是只程序的结构流程容不容易被其他人看明白,可移植性是指程序是否可以引用到其他非开发环境系统的系统或者设备上.

C语言移植怎么样理解
可移植性 指 源程序 可以用到 另一台机上,编译后能正确运行。移植性高,指 源程序 不需改动或只需稍加改动,就能编译后正确运行。也有人理解,可移植性包括可翻译性,例如,通过翻译程序翻译,或解释程序解释,就能在另一台机上(另一种操作系统或硬件平台)运行。可移植性并不是指所写的程序不...

解释语言和编译语言有什么区别?可移植性是什么意思?
需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。可移植性 软件可移植性指与软件从某一环境转移到另一环境下的难易程度 ...

C语言可移植性强具体指什么?
1、可以在任何机器上运行 2、可以在任何操作系统上运行 可移植性并不是指直接复制程序就可以用了,指的是不用改变代码便可以在另一台机器上编译运行。

高级语言的可移植性???
高级语言的可移植性 是能移植 到 各种系统 而不是 直接解析为机器码 让cpu等硬件去执行 是 解析为系统级代码 如dos 的命令 一样 让系统识别 系统识别了 命令和代码 才会解析为 机器代码 高级语言的可移植性 是 可以 移植到别的系统 系统来解析语言让 其 可以在机器上运行 所以 高级语言的 都是...

python的语言特点有哪些
python语言的特点主要有速度快、免费、可移植性、解释性、可扩展性等,具体如下:1、速度快:Python的底层是用C语言写的很多标准库和第三方库也都是用C写的运行速度非常快。2、免费:使用者可以自由地发布这个软件的拷贝、阅读源代码、做改动、把一部分用于新的自由软件中。3、可移植性:由于其具有...

天门市15679358411: C语言中,可移植性是什么意思啊? -
鱼怕盘龙: 可移植性并不是指所写的程序不作修改就可以在任何计算机上运行,而是指当条件有变化时,程序无需作很多修改就可运行. 你不要把“我不会遇到这种情况”这句话说得太早.直到MS—Windows出现之前,许多MS—DOS程序员还不怎么关...

天门市15679358411: C语言可移植性强具体指什么?
鱼怕盘龙: 常见的就只有x86系列的CPU和现在的x64CPU,但计算机的硬件很复杂,远不止这些CPU,如微波炉,洗衣机,冰箱都有CPU,这些CPU和我们的家用电脑CPU不同. 可移植性就表现在可以从一种硬件结构移植到另外一种上. 同时在不同操作系统上运行也要移植,比如从Windows系统移植到Linux,Unix操作系统,或者从Windows移植到手机上运行,这些都要移植性.移植性不好,就很容易出问题,或者根本不能运行. 两个方面: 1、c程序能在不同的编译环境中编译,比如你在vc++中写的代码,然后放在tc中同样能编译并且得到相同的执行结果. 2、编译后生成的可执行文件能在不同的os上执行.

天门市15679358411: C语言可移植性强具体指什么? -
鱼怕盘龙: 它是vb,vc语言的基础型,可适用于多种语言

天门市15679358411: C语言的移植性好?什么是C语言的移植性? -
鱼怕盘龙: 可移植性 指 源程序 可以用到 另一台机上,编译后能正确运行. 移植性高,指 源程序 不需改动或只需稍加改动,就能编译后正确运行. 也有人理解,可移植性包括可翻译性,例如,通过翻译程序翻译,或解释程序解释,就能在另一台机上(另...

天门市15679358411: C语言可移植性强具体指什么? -
鱼怕盘龙: 就是跨系统,跨硬件.vb编写的程序只能再windows上运行,而c编的可以在windows,linux,微波炉等等上运行.比如汇编语言移植性不强,因为它在不同地方语法不一样,所以在a上写好了汇编程序要想把它用到b上需要做很大改动.

天门市15679358411: 通常说C语言移植性比较好,指的是啥>>>>>>>>>>>>> -
鱼怕盘龙: 可移植性就是指用某种计算机语言编写的程序在各种编译器和CPU架构上的通用程度 C语言就是一种可移植性比较强的语言用它编写的程序可以不经修改在很多平台上应用 而一些汇编语言可移植性就比较差现在的情况是, JAVA 具有更好的跨平台性,他就是为此设计的

天门市15679358411: 可移植性是什么意思啊?C语言中,可移植性是什么意思啊?
鱼怕盘龙: 假如你的手册提醒你某种功能或某个函数是你的编译程序或某些编译程序所特有的

天门市15679358411: C语言就是一种可移植性比较强的语言用它编写的程序可以不经修改在很多平台上应用是什么意思? -
鱼怕盘龙: 你恐怕是看错了吧,据我所知c语言的可移植性可以说是在当今流行的语言中最差的了,因为c语言出现时期较早,它是以汇编语言为基础编写的,而汇编语言以cpu的指令为基础,可以说不同类型的cpu其指令是不同的,所以在一台机器上编写的c语言程序,换在另一个操作系统中运行起来就完全不一样了.比如在windows环境下编写的exe程序是不能直接在linux环境下运行的.再拿当今十分流行的java语言举例,它的可移植性就很强,它所编写的程序代码不仅可以在不同系统中运行,甚至可以在装有java虚拟机的手机上运行.因为它的运行不是基于操作系统,而是在java虚拟机上运行,所以只要你的系统有java虚拟机,不管在哪种环境下编写的java代码都能运行.

天门市15679358411: C语言代码编译成的是机器码,那么怎么实现可移植性呢? -
鱼怕盘龙: C语言的可移植性不是体现在生成的2进制文件上面,而是体现在源代码级别的,只要重新编译就能运行. 一是,因为大部分系统都实现了C的标准运行库. 二是,它对机器指令进行了抽象.用if,for等语句代替了多条机器指令.像汇编这种就不太可移植的,它一条语句对应一条机器指令,不同CPU支持的指令集是不完全一样的.

天门市15679358411: 程序的可移植性是什么意思? -
鱼怕盘龙: 就是说程序在完成后,可以直接搬用到其他的平台上. 完成其他平台的需求.这样可以避免代码的重复编写 给编程带来很大方便.在几乎所有机器上都有C语言编译器 LINUX - g++, ... Windows - Visual C++, ... DOS - Turbo C, ... 因此你用C语言写的程序可以在另一种机器上编译并运行 而汇编语言与机器硬件紧密相关,不具备可移植性

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网