网站首页 > 技术文章 正文
现在主流的手机平台很多,比如:Windows开发的Windows Phone(WP-"X"),
Apple(苹果公司)开发的ios,Google(谷歌)开发的android,等等!
而这些操作系统平台的语言支持大同小异;
1、Windows Phone上支持VB,C#,C,C++;
2、iOS上支持Object-c,C,C++;
3、android上支持java,C,C++;
既然如此,我们要想开发一款应用,而且兼容主流平台都能应用,而且不想写太多的代码,我们如何选择开发语言呢?答案是:我们可以选择C++语言。
C++语言是如何跨平台的?
1、首先说一下,C#,java也跨平台,它们是怎样跨平台的?
C#,java跨平台,指的是,经过“编译系统” 编译,生成中间文件“字节码”,这样的字节码经过不同平台“解释器”再解释一次,就变成了适应各个平台的“机器码”。
2、而C++语言,源代码是直接经过编译器编译成“操作系统”可以执行的“机器码”,
那么它是怎么跨平台的呢?因为支持C++语言的各个平台的架构不同(比如CPU能够处理的指令集不一样),所以一份C++源代码要想在另一个操作系统平台上执行,就必须用该平台相对应的C++代码编译器对C++源代码重新进行编译,生成该平台可以直接执行的机器代码。
它的执行过程是:预处理->编译->汇编->链接->机器码
3、我一直以为:汇编指令是字节码,而不是二进制文件,实际上错了,字节码也是二进制文件,只不过它与具体的机器码不同,具体的机器码是与具体的运行设备有关的,而汇编指令是与具体的硬件环境无关的。
所以说java,C#跨平台是建立在“虚拟机”的基础上的,通过虚拟机,将字节码 通过“解释器”,解释成 机器码。(java的虚拟机,C#的.net运行时环境)。所以也有的人说java,C#是解释性语言,而C、C++是编译性语言。
java,C#的跨平台受到"虚拟机"的限制,如:
1、.net环境只能在windows下有,Linux(Android),和Unix(ios)都不支持;
2、java虚拟机平台主要是Android支持,Windows(WP)和Mac(ios)都不支持;
3、.net环境、java虚拟机 在windows上默认是没有安装的。
4、java虚拟机可以配置在mac,windows(PC操作系统)上,但是不能配置在WP,IOS(移动操作系统)上,只能配置在android(移动操作系统)。
由于C/C++不受虚拟机限制,一份同样的源程序,只需要在每个不同的平台重新编译一次,就可以在各种平台上运行应用程序。而java则是编译一次,然后放到不同平台的java虚拟机上运行!
因为java最后是解释执行的,C,C++不需要解释执行,所以
版权声明:本文为CSDN博主「那事那人」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/yjhdxflqm/article/details/50456526
最后,如果你想学C/C++可以私信小编“01”获取素材资料以及开发工具和听课权限哦!
猜你喜欢
- 2025-09-01 C语言重要吗?_c语言重要吗计算机专业
- 2025-09-01 2024 年顶级 C# 面试问题和答案_c#面试题及答案2020
- 2025-09-01 C#调用C++编写的DLL需要通过P/Invoke机制实现
- 2025-09-01 掌握 C# 和 .NET:常用术语与概念_c#.net教程
- 2025-09-01 C++ .NET与C# .NET:谁才是.NET开发的“真香”选择?
- 2025-09-01 是C++好,带GC的Java、C#好?还是Rust好?
- 2025-09-01 为什么有人一直喜欢 C 而不喜欢 C++?
- 2025-06-08 深入理解C#,首推这六本书(c#入门经典书籍)
- 2025-06-08 C语言有何意义(c语言的含义)
- 2025-06-08 Java、C语言、C++、Python等编程该选哪一个
- 12-13wds(五代十国)
- 12-13手机屏幕大小怎么调整(手机屏幕大小怎么设置方法)
- 12-13win8各版本区别(win8版本区别对照表)
- 12-131t固态硬盘怎么分区合理(1t固态怎么分盘好)
- 12-13thinkpad系列排名(thinkpad各系列电脑)
- 12-13普联路由器无线桥接设置图解
- 12-13uefi启动是什么意思教您如何进入
- 12-13为啥c盘空间一直自己变小(c盘空间莫名其妙会变大)
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (77)
- vector线程安全吗 (73)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)
