【发布时间】:2016-02-10 08:59:34
【问题描述】:
我刚加入一个项目,有一堆代码(在过去 5 年里由 4 或 5 个不同的人编写)。此时全是 C,但我想将项目迁移到 C++ 以利用 OOP。
第 1 步将简单地保留所有现有代码,并选择性地将非常小的功能片段转换为面向对象的功能。
我的理解是C可以用C++编译,但也许我错了。
那么,在我投入大量时间尝试实际操作之前,我是否能够相对轻松地使用 C++ 编译现有的 C 代码?
或者,这可能需要大规模迁移才能奏效?
哪些因素会影响我提议的任务的复杂性?
所以要明确一点 - 我不是询问将所有代码转换为对象、将函数转换为方法等的项目有多大 - 而是我是什么可能面临使用 C++ 编译器而不是 C 编译器来编译现有 C 代码。
提前致谢 - 我期待您提供任何帮助/指导。
编辑
听起来这真的不是一个好主意。我一直认为 c++ 是 C 的扩展,但听起来它们的不同之处在于这不是一条可取的路径。最终,我并不认为它们是不同的语言,而是希望 c++ 比听起来更向后兼容 c。我最初的搜索看起来人们已经在不同程度上取得了成功,但这里的回答让我觉得我真的应该把它们看作是两种不同的语言。谢谢!
【问题讨论】:
-
很多时候,C代码用C++编译器不用修改也能编译好,但能不能保证,我不知道。
-
事实上,大多数实质性的 C 代码都不是有效的 C++(不同的关键字、不同的转换规则会影响
malloc的大多数用途……)但通常可以机械地移植。 -
为什么你觉得你需要使用你几乎一无所知的现有代码并用不同的语言编译它?
-
C 和 C++ 是不同的语言。虽然您当然可以将 C 代码移植到 C++,但不要期望相同语法具有相同的语义。您必须对两种语言都足够了解才能移植。更不用说名副其实的端口将使用该语言提供的功能。因此,通常重新实现往往是更好的方法(然而,老板们不太懂 muss - 因为他们不懂语言)。
-
第一步是与其他开发人员协商并确保他们都想更改项目的语言