【问题标题】:What are the differences between Turbo C++ 7 and Dev C++ in terms of syntax? [closed]Turbo C++ 7 和 Dev C++ 在语法方面有什么区别? [关闭]
【发布时间】:2017-09-02 11:01:20
【问题描述】:

在学校,我使用 Turbo C++ 7 教授 C++。当我进入大学时,我发现它已经过时了。我想知道在 GCC 或 Dev C++ 编译器中在 C++ 14 中实现的更改。

示例:conio.h 在 C++98、C++14 等中不存在,而我们有 using namespace std;

【问题讨论】:

  • 这几乎就像一个在过去 20 年里被关在地堡里的人现在才走出去。哎哟。
  • 你的要求填满了很多书。我们不能给你一个完整的答案
  • 顺便说一句,DevC++ 不是编译器(从来都不是)
  • 关于这方面的书确实有整本书。

标签: c++ c++14 c++98


【解决方案1】:

请注意,<conio.h> 不存在于任何编程语言标准中。您可以查看n1570 上的C11 标准草案。您也可以检查C++14 标准(并且您可以检查所有早期的 C 或 C++ 标准)。 FWIW,我从 1970 年代开始编码,从未使用过 <conio.h>

我正在使用一个很好的、非常符合标准的 C11 和 C+14 实现,它没有 <conio.h>。我的电脑运行Linux,我的编译器是GCC 7。

<conio.h> header 特定于 MicroSoft 系统。 AFAIK 没有标准提及它。您不会在 POSIX(以及所有非 MicroSoft)系统上找到 <conio.h>(对于 POSIX,您应该更喜欢 ncurses,它是一个常用的免费软件库)。即使是 1990 年代的 Unix 工作站也没有
<conio.h>,当前的非 Microsoft 系统也没有。

TurboC++ 是一个过时的编译器。它编译了一个过时的、从未标准化的 C++ 子集的变体。 今天不要使用 TurboC++

顺便说一句,DevC++(或Code::Blocks)是不是编译器,而是IDEs。他们正在运行一些(可配置的)编译器,通常是GCC

我强烈建议使用一些近期 free software C++ 编译器,特别是 GCCClang/LLVM。两者都非常符合标准(有一些微小记录的偏差)。

不要忘记启用所有警告和调试信息(大多数编译器默认不启用它们)。使用GCC 编译使用g++ -Wall -Wextra -g

我什至强烈建议在您的计算机上安装一些Linux distribution,因为它们对开发人员非常友好,并且由您可以学习其源代码的免费软件组成。

如果你想学习C++,一定要学习和使用至少C++11(最好是C++14,非常接近C++11)。在 2017 年,任何旧标准都不值得学习(除非您的雇主强迫您学习)。

当然,仅 C++ 编译器是不够的(顺便说一句,它们几乎都是命令行程序)。您还需要其他工具,尤其是链接器、加载器和汇编器(例如binutils);你需要一些source code editor(我的偏好是GNU emacs,但你可以使用vimgedit或许多其他人)-其中一些自称IDEs-你想使用debugger(例如如GNU gdb),版本控制系统(我推荐git),build automation 工具(如GNU make)。

大多数 Linux 发行版都很好地封装了所有这些。

一旦你读了一篇好的introduction to C++ programming,就养成看cppreference的习惯。请注意,C++ 是一种非常复杂的编程语言(很少有人非常了解它,我并不声称自己非常了解它,而且可能从未见过任何了解它的人很好),所以准备好花几年时间学习它。一个重要的概念是undefined behavior

顺便说一句,TurboC 接受的语言与 C++14 标准最重要的区别不是语法,而是semantics

【讨论】:

    【解决方案2】:

    根据您所说的(并参考conio.h),最可能的结论是您没有学过 C++(使用 Turbo C++ 7)。您被教导“带有一些 C++ 特性的 C”。有些人模棱两可地称之为“C/C++”。这是大多数在优秀高中学到的东西,它可以通过编程比赛为你提供很好的帮助。

    所以请按照以下步骤操作:

    1. 接受你不懂 C++(或者“你知道的不是真正的 C++”)
    2. 重温 Bjarne Stroustrup 的介绍性“A Tour of C++”,创建 C++ 的人,并填补“你所知道的”和“现代 C++”之间的空白
    3. 了解一下各种 C++ 标准版本的语言特性之间的差异(从 google-ing “C++14 features”等开始)
    4. 选择一本好的 C++ 书籍,比如“Effective C++”(或其他,随便问问!),然后在大学前几年与你的课程一起阅读它

    提示:在 3 到 4 岁之间,当你意识到掌握 C++ 需要很多年的时间时,停下来问问自己“C++ 是否适合我想写什么样的程序?”。 如果答案是“否”,那就选别的吧。如果答案是“是”,那么暂停一下,绕道走:绕道汇编程序和“真正的纯 C”(Linux 内核中的类型)的“地下世界”,绕道几道“替代宇宙” ” 的 D、Rust 和 Go,以了解 C++ 有什么问题以及为什么它会导致世界上大多数错误和安全漏洞(提示:有很多错误!),以及如何减轻其反- 功能。

    哦,还有...不要绝望:)

    【讨论】:

    • 因为您开始在这里比较语言...there's a lot wrong 是的。但是,您也不需要 Go 中的操作系统内核。 why it's responsible for most of the world's bugs除以使用份额(例如,在全球多少台计算机上运行多少 SLOC),那就太好了。
    • @deviantfan 好的,Go 在那里很糟糕,它不是真正的“系统语言”。但是 Rust 和 D 是,尽管我认为 C++ 唯一真正的竞争对手是“C++ 的下一个版本”,需要维护和重用的旧代码太多:)
    • 这似乎很自以为是,而且离题了。 OP 没有询问如何学习 C++,甚至没有询问 C++ 的替代方案,也没有询问您对该语言的评论。 C++ 负责“世界上大多数错误和安全漏洞”的声明在这种情况下是多余的并且毫无意义(即不合格且没有指向任何支持资源的链接)。
    • @NirFriedman 回答这样一个问题有什么乐趣呢? :)
    猜你喜欢
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多