当一段代码被称为便携式时意味着什么?

use*_*753 7 portability

我在很多文档中都看到一段代码是可移植的.

谁能准确地向我解释调用一段代码是否便携?

mea*_*gar 7

可移植代码是不紧密耦合到一个特定平台的代码,或者尽可能松散地耦合到特定于平台的API.它是"便携式的",因为将它从一个平台移动到另一个平台所需的工作量很低.

当您打算在各种平台上编写旨在供大量受众使用的代码时,便携式代码是可取的.

可移植性主要是编译语言中的一个问题,因为解释型语言通常依赖于解释器在运行时提供统一的接口.通过依赖于诸如backticksexec在本地环境中执行命令的功能,而不是通过可能具有不同平台特定实现的库访问相同功能,仍然很可能在解释语言中编写特定于平台的代码.

库通常非常关注可移植性,因为它们的主要目的是跨平台提供一致的API.

编写可移植代码涉及最小化代码必须"达到"的位置数量,并触及标准API之外的底层操作系统.通常,您将封装此类访问权限,以便代码库中只有一个位置,必须从平台移植到平台,而批量保持不变.


mah*_*mah 2

可移植代码很容易迁移到其他平台 - 无论是其他编译器还是其他操作系统,只需进行最少的更改即可促进迁移。

理想情况下,这可以通过仅使用标准(系统提供的头文件中定义的类型、函数、定义,在另一个系统上这些头文件可能由编译器/操作系统供应商修改以适合该系统)来实现。

有时使用标准是不够的,需要在整个代码中使用(通常很难看的)#ifdef。

我的陈述假设使用类似 C/C++ 的语言。许多其他语言本质上更具可移植性。