c语言为什么能跨平台或者是如何跨平台的?

如题所述

第1个回答  2022-12-11

c语言能跨平台是因为各个平台有相应的c编译器,只要源代码相同,编译器编译出来的二进制文件就会实现相同的功能,但是这些二进制文件本身是不一样的。

exe就是2进制的,但不完全是原来程序的代码,还包括了windows系统的一些代码。

科普一下,C最早是出现在Unix下的,Windows那都是后话了,C出现的时候Windows还没开发出来呢。

C有个比较特别的称呼,叫中级语言,因为它有高级语言的特性又能跟底层硬件很好的交互所以才有这么个说法。DOS时代在C里面嵌上一段汇编直接从并口读个数上来那是很流行的,现在没见谁在VC里面这么干吧。Windows也不让啊。想访问硬件怎么也得通过驱动。

C在多种平台下可以实现代码级的共享,跨平台就需要重新编译了。

但是,我也见过有的软件是可以在多种平台上运行了,可能有什么特别的技术,可以先识别一下操作系统,再运行相应的代码。这个应该是在编译的时候有特殊的技巧。

C编译、连接器网上有现成的代码,一般不是很专业的技术人员没有去研究它。我一直把玩编译原理的视为天人,有能力把编译原理那本书看完的就很不容易了,再要能领会其中精要那就成才了,能把龙书虎书鲸书都搞明白的那就是一流专家了。

c语言为什么能跨平台或者是如何跨平台的?
c语言能跨平台是因为各个平台有相应的c编译器,只要源代码相同,编译器编译出来的二进制文件就会实现相同的功能,但是这些二进制文件本身是不一样的。exe就是2进制的,但不完全是原来程序的代码,还包括了windows系统的一些代码。科普一下,C最早是出现在Unix下的,Windows那都是后话了,C出现的时候Window...

c语言是如何跨平台的?
c语言能跨平台主要因为各个平台包括DOS,Windows,Linux,UNIX等都有c编译器,只要源代码相同,编译器编译出来的二进制文件就会实现相同的功能(不包括跨平台的系统调用)。但是这些二进制文件不一样,Linux中的可执行文件一般情况下都不能在Windows中运行,因为他们是两个完全不同的操作系统,有不同的内核,...

c语言是可移植的吗
C语言可移植性的原因如下:1. 标准化的语法和特性:C语言有明确的语法规则和特性,这些规则在全球范围内被接受并遵循。这使得编写的C程序可以在不同的编译器和操作系统上编译和运行。2. 平台抽象层:C语言本身提供了一些基本的库函数,这些函数在不同的平台上都有相似的功能和表现。这意味着,只要目标...

c#真的可以跨平台吗
从理论上说,C#是完全可以跨平台的。因为c#是借助.Net平台运行的,c#代码会被编译生成为MSIL,即微软中间语言,类似于Java的字节码,.Net是根据MSIL来执行的,而不是像C语言那样直接生成本地代码。C语言之所以无法跨平台,是因为进行与系统有关的操作的时候需要调用系统提供的函数,并编译成为本地代码,...

C语言到底有没有跨平台性?
C语言本来就是跨平台的,不过是“源码级”跨平台。本来就是存在针对linux、windows的不同的编译器。所以有C语言“一次编写,到处编译”,Java是“一次编译,到处运行”的说法。如C++创始人酸溜溜的说法,JVM造了一个新的平台,让所有Java程序只能在这个平台上运行,而C和C++的代码可以在几十个不同的...

C语言是不是跨平台的?
回答可以说是也不是。C的源代码是跨平台的而编译后的目标文件和可执行文件就不是跨平台的。因为针对不同的平台会用不同的编译器来编译和链接同样的源代码。当然如果你的代码里有针对某种特定平台的代码的话(比如Windows API调用),那么用针对其它平台的编译器就会出错。一般来说如果想写真正跨平台的...

C#跨平台吗?
实现,这时候C#就可以看成完全跨平台的了。不过Mono毕竟是社区实现,没有大公司的资金支持,虽然算是稳步发展,但是一直不温不火。这种情况知道最近几年改善了。因为微软终于出手了,这就是大名鼎鼎的 .NET Core,官方的跨平台.NET 实现。作为.NET 的亲儿子语言,C#自然理所应当的跨平台了。.NET Core...

c语言具有哪些特点
强大的移植性:C语言是一种跨平台的语言,其代码可以在不同的操作系统和硬件平台上运行。这得益于C语言的标准制定和其语言本身的特性。由于C语言与特定平台无关的特性,使得开发者可以在不同的环境中重复使用相同的代码,提高了开发效率和软件的可靠性。丰富的库函数和强大的功能:C语言拥有丰富的库函数...

C语言什么了\/它和JAVA有什么不一样了\/
这种差异使得C语言在开发低级语言和系统级程序时具有优势,因为它能直接控制硬件资源,实现高效性能。而Java则在开发跨平台应用、企业级应用和Web应用等方面更具优势,因为它简化了跨平台的开发和部署过程,降低了维护成本。总之,C语言和Java在运行机制、平台依赖性和应用场景上存在显著差异。C语言强调低级...

java语言跨平台是因为虚拟机,那么为什么C语言没有一个跨平台的...
java语言的跨平台说白了是让程序员用户可以跨平台,它的平台移植与管理交给某个团队统一管理。就是java虚拟机需要某个团队写多个不同平台的代码,java程序员只写java代码,编译一次就可以在多个平台上运行。c语言有跨平台的虚拟机,比如VMware Workstation在Windows上创建一个Linux虚拟机,或者你有兴趣也...

相似回答
大家正在搜