网站首页 > 技术文章 正文
现在主流的手机平台很多,比如: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-06-08 深入理解C#,首推这六本书(c#入门经典书籍)
- 2025-06-08 C语言有何意义(c语言的含义)
- 2025-06-08 Java、C语言、C++、Python等编程该选哪一个
- 2025-06-08 C#调用C++常用的两种方式(c#调用c++库 对象)
- 2025-06-08 iOS开发生涯的初恋:详解Objective-C多项改进
- 2025-06-08 各种不同的转义字符内部揭秘(常见转义字符)
- 2025-06-08 如何在C#中调用C++方法(c#调用c++的类)
- 2025-06-08 软件行业的误解以及赚钱的途径(软件行业怎么了)
- 2025-06-08 C语言-基本概念(c语言基础知识概念)
- 2025-06-08 什么?C#也能开发操作系统了?(c#一般用来开发什么)
- 1522℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 640℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 527℃MySQL service启动脚本浅析(r12笔记第59天)
- 492℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 492℃启用MySQL查询缓存(mysql8.0查询缓存)
- 479℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 461℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 459℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)