我有一个 20 世纪 90 年代用 C 编写的旧程序。 我想更新它,以便它适用于下一个人和现代编译器。 目前我正在使用一个非常旧版本的 TurboC 来进行更改。 我应该专注于用现代 C 或 C++ 重写它吗? 哪一个最容易使此代码更新,而无需重写太多并且能够重用大部分现有代码?
我的编程背景主要是 Perl、Python、PHP、Powershell 和 Visual Basic 等编程语言,所以我不太熟悉 C 和 C++ 之间的差异。
C 和 C++ 是不同的语言,而不是同一语言的不同版本。坚持使用 C,尽管您可以使用标准新版本的奇特功能,例如 C99。
你的最后一句话几乎回答了你的观点。如果您不熟悉这些差异并且只知道较旧的语言,我不会更新此程序,除非它存在影响许多用户的严重错误。
如果您有更新的编译器,您可以在 C 世界中更新它以遵守 C99 或 C11
鉴于:
有一个 20 世纪 90 年代用 C 编写的旧程序。
您有两个问题:
我应该专注于用现代 C 语言重写它吗? 也许,也许不是。 我会尝试遵守标准 C89、C99 或 C11。 这主要取决于您的工具以及将会发生多少新的开发。
您喜欢在作用域开头以外的地方声明变量吗? 如果是这样,那么可能更新到C99。 您是否使用任何真正喜欢 C89 并按照 C99 约定显示错误或警告的工具? 如果是这样,那就坚持使用 C89。
如果该计划不断更新并且您正在雇用年轻人,那么更新的会议可能会有所帮助。
我应该专注于用 C++ 重写它吗? 没有。
大多数编写良好的 C 程序也是有效的 C++ 程序,或者只需要一点点调整。相反的情况则不然。
坚持使用 ANSI/ISO C 并为下一个维护人员敞开大门可能更容易。
迁移到现代 C 编译器与迁移到现代 C++ 编译器可能需要付出同样的努力。 C 和 C++ 的发展出现了分歧,两者都有相似的功能,但它们不兼容源代码。
有几个因素会导致我选择更新到 C++:
现代 C 似乎没有 C++ 那样受到支持。例如,C 中的许多新事物似乎只能按照 C++ 的要求来实现,尤其是在 Microsoft 世界中。 VS 除了 C++ 之外连 C99 都不支持,更不用说 C11 了。
C++ 是更好的 C:“C++ 是“更好的 C”,因为它支持使用 C 进行的编程风格,具有更好的类型检查和更多的符号支持(而不损失效率)。”现代版本的 C 仍然如此。
C++ 添加了支持一些非常强大的技术的功能。真正利用它们可能最好留给库开发人员,但这意味着 C++ 可以支持真正出色的库。