为什么不用Turbo C ++编译简单的“Hello World”风格的程序?

我已经开始为我的编程课程学习C ++了。 我已经下载了这个“Hello World”程序:

#include <iostream> using namespace std; int main() { cout << "Hello, World!"; return 0; } 

但Turbo C ++抱怨:

 Error D:\HELLO.CPP 1: Unable to open include file 'IOSTREAM' Error D:\HELLO.CPP 2: Declaration syntax error Error D:\HELLO.CPP 6: Undefined symbol 'cout' 

这个非常简单的程序有什么问题? 我怎样才能纠正这些错误?

这个程序没有问题。 (除了可能的一些风格问题 – 不build议using namespace std )。 问题在于Turbo C ++。 这是一个非常老的软件。 它实现了一种C ++的方言,即所谓的ANSI C ++ ,在本世纪初已经完全没有使用。 C ++的第一个ANSI标准于1998年发布,然后是2003版本,2011版本,2014版本,现在我们预计2017版本将正式发布。 这些标准修订中的每一个都对语言带来了或多或less的重大改变。

对于Turbo C ++,你必须像这样修改程序:

 #include <iostream.h> // note the .h suffix // using namespace std; // Turbo C++ doesn't implement namespaces int main() { cout << "Hello, World!"; return 0; } 

如果你看这个程序,现代C ++方言和Turbo C ++所接受的方言之间的区别似乎很小。 但是,随着程序变得越来越复杂,它会变得更大。

虽然你可以学习使用Turbo C ++编程,但是我强烈build议避免这种情况,因为存在以下问题:

  1. 你将会学习一种与业内stream行的语言有些相似的语言,但是却有很大的不同,因为没有任何理由。 如果你打算用C ++进行真正的软件开发,你将不得不重新学习。 学习现代C ++就容易多了。
  2. 目前还没有关于Turbo C ++的文献。 在互联网或书本上find的几乎100%的C ++资料并不直接适用于Turbo C ++。 有些只需要稍微适应,而其他材料是完全无法使用的。 几乎所有可以立即获得的帮助都是内置的Turbo C ++帮助。
  3. 很less有人记得Turbo C ++。 当在论坛上提出问题时,请始终指定您正在使用一种ANSI之前的方言,以筛选出适合现代版本的语言的回复。 您可能会收到一堆评论,build议您立即停止,并在您提出的每个问题中切换到现代编译器。

有许多现代免费(如啤酒 ,以及语音 )编译器和IDE,你可以用来代替Turbo C ++。 其中一些包括:

  1. Visual C ++ Community Edition是一个IDE和Microsoft的编译器
  2. Code :: Blocks是一个轻量级的IDE。 在Windows上,它带有一个过时的编译器,但你可以自己安装一个更现代的编译器
  3. Eclipse CDT是一个function强大的跨平台IDE。 它不附带自己的编译器,所以你需要安装一个单独的编译器。 在Windows上,使用例如MinGW 。
  4. 还有很多
  5. 此外,还有许多在线编译器,如http://ideone.com,https : //www.onlinegdb.com/和http://coliru.stacked-crooked.com/ ,还有更多 (这些大多是好的试验想法和编写非常小的程序)。
  6. Clang / LLVM和GCC都是免费软件编译器,支持最新版本的C ++。

令人遗憾的是,有些学校/老师似乎强迫学生在当今时代甚至使用Turbo C ++。 不幸的是,这不是社区可以解决的问题。 如果你发现自己处在这种情况下,准备不能得到很多的外部帮助。

Turbo C ++是一个非常古老的编译器,与GNU C ++编译器有点不同。 你分享的代码将完美地与GNU编译器一起工作,但是要用Turbo C ++运行它,你需要做一些改变:

1.将头文件的名称从iostream更改为iostream.h
2.删除“使用命名空间标准”行在Turbo C ++中不需要。 这是修改的代码:

 #include <iostream.h> int main() { cout << "Hello, World!"; return 0; }