使用gcc的C++前端编译C代码的好处

13

我对一年前在安卓的Dalvik平台中推出的此次提交感到非常疑惑和困惑。

文件扩展名被更改为C++扩展名,以“将解释器移入C++”——使用编译器的C++前端。

这种变化有什么好处呢?Dalvik 平台是一个 100% C 和汇编语言项目,没有使用任何 C++ 特性


2
C++具有更好/更严格的类型安全性和不同(更高效?)的调用约定。 - Magnus Hoff
1个回答

3
我只能猜测,但考虑到Android系统的复杂性增加,C++的作用域特性(类和命名空间)可能会使代码库更易于管理。
编辑:即使项目目前没有使用任何C++功能,他们可能只是提前规划。
除了一些小差异(即大多数人都避免的一些参数约定),C源代码可以不经修改地编译为C++。尽管如此,在某些领域,C++语法比C更严格(C允许您将void指针分配给另一种指针类型而无需转换; 在C ++中,这是一个错误),强制执行此严格性可避免未来出现问题。
*)(这是一个过于简单化的观点,请参见评论)
进一步改变的原因可能是因为大多数现代开发更喜欢C++而不是C,因此可以使用更丰富的工具集。
再次推测,但在Android诞生时,C可能是嵌入式设备开发的唯一可行选择,而现在这种限制已不再是问题。

那是我的第一反应,但我没有发现代码中使用任何C++特性。 - Julio Guerra
3
不,C和C++基本上只是接口兼容而不是编译兼容。从命名类型的作用域到编译时常量的概念不同等等方面,存在许多小陷阱。 - Jens Gustedt
@JensGustedt 好观点!只要遵循 C++ 更严格的语法要求,是否可以将 C 视为 C++ 的一个子集呢? - Tony the Pony
1
@Tony the Pony:这两种语言有一个共同的子集,但要在其中编写代码基本上需要彻底了解两种语言,这比只选择一种语言并坚持使用它更难。我建议将其保留为旨在供两种语言使用的头文件。 - Steve Jessop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接