【问题标题】:Benefits of compiling C code with gcc's C++ front-end使用 gcc 的 C++ 前端编译 C 代码的好处
【发布时间】:2012-05-22 09:27:11
【问题描述】:

我对一年前推送的this commit on android's dalvik platform感到非常疑惑和困惑。

文件扩展名已更改为 C++ 扩展名,以便“将解释器移至 C++” - 使用编译器的 C++ 前端。

这种变化有什么好处? Dalvik Platform 是一个 100% C & asm 项目,没有使用任何 C++ 特性

【问题讨论】:

  • C++ 具有更好/更严格的类型安全性和不同的(更高效?)调用约定

标签: android c++ c gcc dalvik


【解决方案1】:

我只能推测,但考虑到 Android 系统的复杂性如何增长,C++ 的作用域特性(类和命名空间)可能会使代码库更易于管理。

编辑

即使该项目目前没有使用任何 C++ 功能,他们也可能只是提前计划。

除了一些细微的差异(即大多数人无论如何都避免的一些参数约定)之外,C 源代码无需修改即可编译为 C++。话虽如此,在某些领域,C++ 语法比 C 更严格(C 允许您将 void 指针分配给另一个指针类型而无需强制转换;在 C++ 中,这是一个错误),并且强制执行这种严格性可以避免以后出现问题。 *

*) (这个观点过于简单,见评论)

改变的另一个原因可能是因为大多数现代开发更喜欢 C++ 而不是 C,所以可以使用更丰富的工具集。

再次推测,但在 Android C 诞生之初,可能是嵌入式设备开发的唯一可行选择,现在这种限制已不再是问题。

【讨论】:

  • 这是我的第一反应,但我没有发现代码中使用了任何 C++ 特性。
  • 不,C和C++基本上只兼容接口,不兼容编译。从命名类型的范围到编译时间常数的不同概念等等,有很多很多的小陷阱。
  • @JensGustedt 好点!只要遵循 C++ 更严格的语法要求,是否可以将 C 视为 C++ 的子集?
  • @Tony the Pony:这两种语言有一个共同的子集,但用它编写基本上需要彻底了解它们,这比只选择一种并坚持下去更难。我会说将其保存为用于两种语言的头文件。
猜你喜欢
  • 2014-09-09
  • 2012-05-15
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 1970-01-01
相关资源
最近更新 更多