上面的他不会在 C++ 编译器中编译,而它将在 C 编译器中编译。为什么是这样?
因为 C++ 要求函数的声明(或定义)在调用点的范围内。
C++ 不只是 C 的扩展吗?
不完全是。它最初是基于一组 C 扩展,它引用 C 标准(有一些修改)来定义 C 标准头文件的内容。C++“语言本身”类似于 C,但不是它的延伸。
并且应该主要是“向后兼容”?
强调“大部分”。大多数 C 功能都在 C++ 中可用,并且许多被删除的功能是为了使 C++ 成为比 C 更严格的类型语言。但没有特别期望 C 代码将编译为 C++。即使是这样,它也并不总是具有相同的含义。
我环顾四周,发现了其他书籍和网站,这些通常也没有为 main 函数指定返回类型
C 和 C++ 标准一直说main
返回int
.
在 C89 中,如果您省略函数的返回类型,则假定它是int
. C++ 和 C99 都缺少这种隐式 int 返回类型,但许多 C 教程书籍和教程(以及编译器和代码)仍然使用 C89 标准。
C 允许实现接受其他返回类型,但不允许可移植程序要求它们。两种语言都有一个“独立实现”的概念,它可以以任何它喜欢的方式定义程序的进入和退出——同样,因为这是特定于实现的,它不适合 C 的一般教学。
IMO,即使您要使用 C89 编译器,也值得将您的代码编写为有效的 C99(特别是如果您有 C99 编译器可用于检查它)。C99 中删除的功能在某种程度上被认为是有害的。甚至尝试编写 C 和 C++ 的代码都是不值得的,除非在用于语言之间互操作的头文件中。
我决定“回归基础”并学习 C。
您不应该将 C 视为 C++ 的先决条件或“基本形式”,因为它不是。不过,它是一种更简单的语言,用于高级编程的功能较少。这通常被 C 的用户引用为 C 的优势。C++ 的用户也将其称为 C++ 的优势。有时,这些用户是出于不同目的使用这些语言的同一个人。
C 中的典型编码风格与 C++ 中的典型编码风格不同,因此在 C 中学习某些基础知识可能比在 C++ 中更容易。使用 C++ 学习低级编程是可能的,而当你这样做时编写的代码最终可能会或可能不会看起来很像 C 代码。
因此,您在学习 C 时学到的东西可能会或可能不会影响您编写 C++ 的方式。如果是这样,那可能会更好,也可能不会。