c++与java编译的过程有什么不一样?

来源:百度知道 编辑:UC知道 时间:2024/05/19 18:46:31
其实我是想知道,C++那么多文件,程序是如何组织这些文件并执行的,象JAVA,就是通过包把类文件给组织起来,然后运行时指定一个类(这个类含有main方法),从这个main入口开始执行,
那C++是怎么样的呢?

一,一样的地方
不管是C++还是java或者其他任何语言,程序最终都编译成二进制的机器码,也就是全是只有机器看得懂的0和1
二,不一样的地方
C++是直接编译成机器码,而Java是要编译两次,第一次是由java.exe将源代码翻译成一种中间层的指令格式,即字节码(byte code),然后你运行的时候再由虚拟机将这些字节码翻译成相应的机器码,这就是java跨平台的原理。不过java也不仅仅是解释,对于一些常用的不会太多改变的指令它是直接翻译成了机器码,所以java程序才会越来越快

Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
c/c++在编译过程中都有一个预编译阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加丁编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c++预处理器的功能类似。

...c++有个main函数,比java更清楚,因为c++只能有一个main

你要知道的是,linker。C/C++,与相当多本地语言一样,使用linker进行执行格式文件的处理。