C++是跨平台的语言
最开始学习Java时,老师就说Java是跨平台的,而c++不是,这里要纠正一下观点,c++也是跨平台的,只不过是实现跨平台的方式不同而已。
1、平台
一般我们把CPU处理器与操作系统的整体叫平台。不同的平台识别的指令架构是不同的。无论哪种语言编写的程序都需要依托平台来运行。
2.c++跨平台的方式
首先看一张与C语言有关的图:

C语言是跨平台的,不过是“源码级”跨平台。不同的操作系统提供了不同的编译器,通过编译器实现了跨平台。所以有C语言“一次编写,到处编译”。
值得注意的一点:我们都知道c++的库函数一般是二进制文件,显然二进制文件是不能能跨平台。那么这些函数库是如何实现跨平台的呢?
库是在编译的时候都已经区分好了,二进制的版本只有当前平台的,用预定义来分别平台和选择要编译的代码。
3.Java的跨平台方式

Java程序能够跨平台是因为Jvm(Java虚拟机),不同的平台可以安装不同的Jvm。也就是我们常说的一次编写,到处运行。
总结一下:
1、C++跨平台是一份源代码,在不同的平台上编译。
2、java跨平台是一份源代码,编译后生成中间字节码,然后通过 不同平台的java虚拟机来解释执行的。
C++是跨平台的语言的更多相关文章
- 跨语言和跨编译器的那些坑(CPython vs IronPython)
代码是宝贵的,世界上最郁闷的事情,便是写好的代码,还要在另外的平台上重写一次,或是同时维护功能相同的两套代码.所以才需要跨平台. 不仅如此,比如有人会吐槽Python的原生解释器CPython跑得太慢 ...
- DotNetCore跨平台~Startup类的介绍
新宠儿 DotNetCore是.net5.0版本,之所以不叫.net5.0为的就是不让我们把它与前面的.net混为一淡,它将是真正意义的跨平台开发语言,在网上也有相关介绍,中国的一些大牛也发了相关文章 ...
- Java跨平台原理
此篇博文主要源自网络xiaozhen的天空的博客:http://xiaozhen1900.blog.163.com/blog/static/1741732572011325111945246/ 1.是 ...
- 【转】Java跨平台原理
原文地址:http://www.cnblogs.com/gw811/archive/2012/09/09/2677386.html 1.是么是平台 Java是可以跨平台的编程语言,那我们首先得知道什么 ...
- 基于Oracle OCI的数据访问C语言接口ORADBI .
基于Oracle OCI的数据访问C语言接口ORADBI cheungmine@gmail.com Mar. 22, 2008 ORADBI是我在Oracle OCI(Oracle 调用接口)基础 ...
- 【疯狂Java学习笔记】【第一章:Java语言概述】
[学习笔记]1.Java与C#的异同:Java与C#的相同之处有很多,它们均摒弃了C++面向对象的多继承.宏定义.全局变量.全局函数.指针等等难以使用的机制,添加进了成熟的机制,如垃圾回收.接口等等. ...
- C语言、Java的编译系统
Java是跨平台的. Java代码的编译是由Java语言的编译器来执行的,执行后生成的是.class文件,该文件是字节码文件. 然后交给虚拟机进行运行,虚拟机是在各个平台上可移植的.从而决定了Java ...
- Python基础 1----Python语言基础和Python环境准备与安装
引导语: 人们学习Python是因为他们爱这门语言,因为他们追寻美,如果我雇用一个Python程序员,那么他们的技术将非常的棒 1 Python是一门跨平台的语言,是一种面向对象的动态编程语言 发布时 ...
- java的特点跨平台原理以及JDK的安装
终于开始了期待已久的java,了解java首先要了解下计算机语言的发展历史 机器语言--->汇编语言--->--->高级语言(面向过程的语言和面向对象的语言) 机器语言 每一个计算机 ...
随机推荐
- python实现维吉尼亚解密
# -*-coding:UTF-8-*- from sys import stdout miwen = "KCCPKBGUFDPHQTYAVINRRTMVGRKDNBVFDETDGILTXR ...
- ajax和jquery使用技巧
1.使用ajax的方法的时候可以使用u方法来获取连接,这样更加安全:alert弹窗的时候需要单引号双引号火狐浏览器会报错!
- c#动态加载卸载DLL
前段时间工作的时候遇到一个问题.就是需要每次启动程序的时候动态替换掉某个dll,所以就百度了这方面的资料.这次记录下来让自己以后可以看. 根据自己的理解,动态卸载dll需要有以下条件: 1:dll在加 ...
- 快速搭建fabric-v1.1.0的chaincode开发环境
本文参考了fabric官方文档:http://hyperledger-fabric.readthedocs.io/en/latest/peer-chaincode-devmode.html?highl ...
- ssh整合之四单独搭建struts的运行环境
1.导入struts的基本jar包 2.在web.xml中配置我们struts的核心控制器StrutsPrepareAndExecuteFilter <?xml version="1. ...
- CMDB资产采集
Agent(方式) 1:服务器每台都需要安装Agent 达到采集速度快,简单:造成性能损耗 获取每台服务器的资产并有返回值:v=subprocess.getoutput('dir')或者ipconfi ...
- Docker:云栖社区开源论题及Spark开源论题
https://yq.aliyun.com/topic/78?spm=5176.8290451.656547.7.rMYhAF https://yq.aliyun.com/activity/155?u ...
- ROS系统MoveIt玩转双臂机器人系列(一)
一.ROS系统的MoveIt模块简介 机器人操作系统ROS目前最受关注的两个模块是导航(Navigation)和机械臂控制(MoveIt!),其中,机械臂控制模块(后面简称MoveIt)可以让用户快速 ...
- POJ-3292 Semi-prime H-numbers---筛素数
题目链接: https://vjudge.net/problem/POJ-3292 题目大意: 定义一种数叫H-numbers,它是所有能除以四余一的数. 在H-numbers中分三种数: 1.H-p ...
- logging格式
import logging def foo(s): return 10 / int(s) def bar(s): return foo(s) * 2 def main(): try: bar(0) ...