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

时间:2012-09-25 12:50:51

标签: portability

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

任何人都可以向我解释究竟是什么调用一段代码是否便携?

3 个答案:

答案 0 :(得分:6)

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

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

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

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

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

答案 1 :(得分:3)

便携性是什么意思?

它意味着以某种方式编写程序,以便相同的代码在不同的环境中工作;例如,不同的处理器,不同的操作系统,不同版本的库等。

如果您的代码是可移植的,您应该能够在任何新系统上重新编译它,它应该没有问题地运行。

为什么重要?

它之所以如此重要,是因为不可移植的代码会导致很多维护问题 - 管理多个版本,可读性差/可理解的代码等等。

答案 2 :(得分:2)

便携式代码很容易移动到其他平台 - 其他编译器或其他操作系统,只需要进行最少的更改即可实现迁移。

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

有时使用标准是不够的,需要使用(通常是丑陋的)#ifdef散布在整个代码中。

我的陈述假定使用类似C / C ++的语言。许多其他语言本质上更具便携性。