java - C++和Java编译过程的区别

标签 java c++ compiler-construction

<分区>

Possible Duplicate:
Why does C++ compilation take so long?

你好,

我在google上搜索了C++和Java编译过程的区别,但是返回的是C++和Java的语言特性和区别。

我精通Java,但不精通C++。但我修复了 C++ 中的一些错误。根据我的经验,我注意到与 Java 相比,C++ 总是需要更多的时间来构建微小的变化。

问候 巴拉

最佳答案

我想到了一些高级差异。其中一些是概括性的,应该以“Often ...”或“Some compilers ...”为前缀,但为了便于阅读,我将省略它。

  • C/C++编译不从二进制文件中读取任何信息,只从需要完整解析的头文件中读取方法/类型定义(异常(exception):预编译头文件)
  • C/C++ 编译包括一个预处理器步骤,可以执行大量文本替换(这使得 header 预编译更难执行)
  • C++语法比Java语法复杂很多
  • C++ 类型系统比 Java 类型系统复杂得多
  • C++ 编译通常会生成本地汇编代码,这比相对简单的字节代码要复杂得多
  • C++ 编译器需要进行优化,因为没有任何其他东西可以做到这一点。 Java 编译器几乎将 Java 源代码简单地 1:1 转换为 Java 字节码,在那一步没有进行任何优化(留给 JVM 去​​做)。
  • C++ 有一种图灵完备的模板语言! (因此严格来说,C++ 代码需要运行 才能生成可执行代码,并且 C++ 编译器需要解决暂停问题以告诉您任意 C++ 代码是否可编译)。

关于java - C++和Java编译过程的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095277/

相关文章:

c++ - 从 llvm pass 打印点文件

c++ - 为什么 g++ 编译这个?

c# - C# visual studio 编译器如何处理 struct/NULL 比较?

java - 为什么 Tomcat 服务器不更改复制的 JSF 项目的名称

java - 在 tomcat 7 上运行的 spring mvc 应用程序出现 404 错误

java - org.hibernate.exception.SQLGrammarException :Could not execute JDBC batch update

c++ - 使用 g++ 编译器出现奇怪的错误

java - 有什么方法可以创建一个通用列表,在其中添加类型和子类型?

C++ - 移位返回负数

c++ - 未加载 Qt ODBC 驱动程序