我在许多文档中看到一段代码是可移植的。
任何人都可以向我解释将一段代码称为可移植的确切含义吗?
可移植代码是与特定平台不紧密耦合的代码,或者与特定平台 API 尽可能松散耦合的代码。它是“便携的”,因为将其从一个平台移动到另一个平台所需的工作量很低。
当您打算在各种平台上编写供大量受众使用的代码时,可移植代码是可取的。
可移植性主要是编译语言的一个问题,因为解释语言通常依赖解释器在运行时提供统一的接口。backticks
通过依赖类似或exec
用于在本地环境中执行命令的功能,而不是通过可能具有不同平台特定实现的库访问相同的功能,仍然很有可能用解释语言编写过度特定于平台的代码。
库通常非常关心可移植性,因为它们的主要目的是提供跨平台的一致 API。
编写可移植代码涉及最大限度地减少代码必须“向下”并触及标准 API 之外的底层操作系统的位置。通常,您会封装此类访问,以便在您的代码库中有一个位置,必须从一个平台移植到另一个平台,而批量保持不变。
便携性是什么意思?
这意味着以某种方式对程序进行编码,以便相同的代码在不同的环境中工作;例如不同的处理器、不同的操作系统、不同版本的库等。
如果您的代码是可移植的,您应该能够在任何新系统上重新编译它,并且它应该可以毫无问题地运行。
它为什么如此重要?
它如此重要的原因是因为不可移植的代码会导致许多维护方面的问题——管理多个版本、代码的可读性/可理解性差等等。
可移植代码很容易迁移到其他平台——无论是其他编译器还是其他操作系统,只需进行最少的更改即可促进迁移。
理想情况下,这仅通过使用标准(系统提供的头文件中定义的类型、函数、定义,在另一个系统上,编译器/操作系统供应商可能修改这些头文件以适合该系统)来实现。
有时使用标准是不够的,需要在整个代码中使用(通常很难看)#ifdef。
我的陈述假设一种类似 C/C++ 的语言。许多其他语言本质上更具可移植性。