4

我有一个 1990 年代用 C 语言编写的旧程序。我想更新它,以便它适用于下一个人和现代编译器。目前我正在使用一个非常旧版本的 TurboC 进行更改。我应该专注于用现代 C 或 C++ 重写它吗?哪一个最容易更新此代码而无需重写太多并且能够重用大部分现有代码?

我的编程背景主要是 Perl、Python、PHP、Powershell 和 Visual Basic 等 hprogramming 语言,所以我不太熟悉 C 和 C++ 之间的区别。

4

5 回答 5

5

C 和 C++ 是不同的语言,而不是同一语言的不同版本。坚持使用 C,尽管您可以使用标准新版本(如 C99)的花哨功能。

于 2012-06-20T16:28:43.313 回答
5

你的最后一句话几乎回答了你的情绪。如果您不熟悉这些差异并且您只知道较旧的语言,我不会更新此程序,除非它存在影响许多用户的可怕错误。

如果你有更新的编译器,你可以在 C 世界中更新它以遵守 C99 或 C11

于 2012-06-20T16:29:34.200 回答
3

鉴于:

有一个 1990 年代用 C 语言编写的旧程序。

你有两个问题:

我应该专注于用现代 C 重写它吗?也许,也许不是。我会尽量遵守标准的 C89、C99 或 C11。这主要取决于您的工具以及会发生多少新开发。

你喜欢在作用域的开头以外的地方声明变量吗?如果是这样,那么可能会更新到 C99。您是否正在使用任何真正喜欢 C89 并使用 C99 约定显示错误或警告的工具?如果是这样,那么坚持C89。

如果该计划不断更新并且您正在招聘年轻人,那么更新的公约可能是有益的。

我应该专注于用 C++ 重写它吗?不。

于 2012-06-20T16:42:29.567 回答
3

大多数编写良好的 C 程序也是有效的 C++ 程序,或者只需要稍作修改。反之则不然。

坚持使用 ANSI/ISO C 并为下一个维护者打开两扇门可能更容易。

于 2012-06-20T16:43:01.677 回答
2

迁移到现代 C 编译器与现代 C++ 编译器的努力可能大致相同。C 和 C++ 的演变发生了分歧,每个都有相似的功能,但它们不兼容源代码。

有几个因素会导致我选择更新到 C++:

  • 现代 C 似乎不像 C++ 那样受到支持。例如,C 中的许多新事物似乎只能根据 C++ 的要求来实现,尤其是在 Microsoft 世界中。VS 甚至不支持 C99,除了 C++ 中的内容,更不用说 C11。

  • C++ 是更好的 C:“C++ 是‘更好的 C’,因为它支持使用 C 完成的编程风格,具有更好的类型检查和更多的符号支持(不损失效率)。” 现代版本的 C 语言仍然如此。

  • C++ 添加了支持一些非常强大的技术的特性。真正使用它们可能最好留给库开发人员,但这意味着 C++ 可以支持非常棒的库。

于 2012-06-20T16:47:51.050 回答