所以我不是C程序员,所以请原谅这个问题。 我正在阅读这篇博文Google Zopfli Compression,我对以下句子感到有点傻眼:“Zopfli是用C语言编写的,用于移植”。
C究竟是一种可移植的语言?或者他不是指在编译到机器代码意义上的便携性,而是一些其他背景?我猜C比编写汇编代码更便携。但这真的是他想要做的比较吗?我希望有人可以告诉我他的意思以及C是一种可移植的语言。
非常感谢!
答案 0 :(得分:5)
此上下文中的便携式意味着“任何人都可以使用此源代码并在自己的计算机上编译并拥有此程序。”几乎所有今天在某处使用电源的计算机都有一个可用的C编译器(它可能没有安装在那台机器上,但它可以安装或作为交叉编译器(例如嵌入式系统)提供),所以源代码几乎无处不在。 (编辑:我假设基于上下文,源代码中没有特定于系统的东西,因为系统特定的东西会限制你的可移植性。)
答案 1 :(得分:5)
“可移植性”具有多种含义,具体取决于具体情况:
C 语言是“可移植的”,因为C编译器是针对各种平台编写的,从大型机到微控制器;
语言也是“可移植的”,因为有一个商定的标准,实现符合(或多或少),所以你没有微妙的不同版本的语言取决于供应商 - 合规程序的行为在任何符合要求的实施中应该是相同的;
C 程序不对其运行的系统做出任何假设(类型大小,对齐,字节顺序)或使用特定于系统的库通常是“简单”可移植的;它们只需要为目标平台重新编译,而无需编辑源代码。
与其同时代的大多数人(Pascal,Fortran等)相比,C 高度可移植,我花了大部分时间来编写必须在多个平台上运行的C代码并发(一个项目需要在Windows NT,Solaris和Classic MacOS上运行相同的代码)。
C的可移植性可以概括为“一次写入 1 ,构建并在任何地方运行”,其中Java和C#的可移植性可以概括为“一次编写和构建,随处运行”。
<小时/> 1。受制于第三个子弹中的警告
答案 2 :(得分:0)
对于要被视为跨平台的软件,它必须能够在多个计算机体系结构或操作系统上运行。
开发此类程序可能是一项耗时的任务,因为不同的操作系统具有不同的应用程序编程接口(API)。 例如,Linux使用与Windows不同的应用软件API。
C是您可以在大多数API中使用的语言。
答案 3 :(得分:0)
C代码可以直接在C ++中调用,并且很容易在C#中使用,我相信Objective-C。这和c编译器的广泛可用性一样,确实有意义。
当然,也可以说,只要在其他机器上直接运行Java,Java就更具可移植性。但是Java不能轻易地从语言转移到语言。