Turbo C++和Code blocks

5

为什么在Code blocks中要使用命名空间和int main,而在Turbo C++中没有命名空间且可以使用不返回任何值的void main,就像我在学校中学到的一样。这是因为编译器不同吗?C++的版本不同吗?


5
Turbo C++非常古老,与标准C ++相差很远。void main()不是标准的C ++。 - drescherjm
你为什么首选使用Turbo C++呢? - shuttle87
2个回答

3
首先,Turbo C++是一个与MS-Windows有关的编译器和IDE捆绑在一起。Code Block是一个支持多种编译器和平台的IDE。这就是这两个工具之间的主要区别,因此您并没有完全比较相同的东西。
其次,“int” 是标准返回值为“ main”,对于C和C ++的程序源代码入口点,这也是通过惯例标准化的(1)。以标准模式操作的C ++编译器希望以这种方式编写程序,因此,如果您想使用符合预期的C ++编译器,则应符合这些期望,而Code Block默认支持这些符合预期的C ++编译器。但是,我非常确定您可以配置Code Block使用特定的编译器处于不符合规范模式(或仅使用不符合规范的编译器),因为它是一个灵活的IDE;您可能能够将其设置为使用Turbo C ++,从而使其编译非ANSI C ++代码。话虽如此,我认为Turbo C ++支持ANSI C ++。
第三,名称空间是C ++的一个功能,如果要使用标准C ++库,则必须使用它们,但否则没有强制使用。

(1)名称是一种约定,但该功能本身显然是必要的。


2

可能你曾经使用过一个非常老的编译器版本,它没有完全实现C++规范,换句话说就是不符合C++标准。在DOS时代编写的旧版本可能允许你做许多恶心的/非标准的事情。

在C++中,整个C++标准库都定义在命名空间std内。你必须使用using和/或完全限定名称(带有作用域解析符号)来访问这些内容。

C++中的main函数必须返回int类型,并具有以下两种签名之一:

int main();
int main(int argc, char *argv[]);

总之,针对你的使用情况,turbo C++存在错误,而Codeblocks则是正确的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接