n. *_* m. 100 c++ c++-faq turbo-c++
我已经开始为我的编程课学习C++了.我已经下载了这个"Hello World"程序:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是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'
Run Code Online (Sandbox Code Playgroud)
这个非常简单的程序出了什么问题?我该如何纠正这些错误?
n. *_* m. 157
这个程序没问题.(除了可能有一些风格问题 -
using namespace std
不推荐).问题出在Turbo C++上.这是一个非常古老的软件.它实现了一种C++方言,即所谓的ANSI-C++之前的版本,在本千年开始之前就完全不再使用了.第一个ANSI标准C++发布于1998年,然后是2003版本,2011版本,2014版本,现在我们预计2017版本将正式发布.这些标准修订中的每一个都对语言带来了或多或少的重大变化.
对于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;
}
Run Code Online (Sandbox Code Playgroud)
如果你看一下这个程序,现代C++方言和Turbo C++接受的方言之间的区别似乎很小.但是随着程序变得越来越复杂,它会变得越来越大.
虽然您可以使用Turbo C++学习编程,但我强烈建议在可能的情况下避免这种情况,因为存在以下问题:
有许多现代免费(如在啤酒中,以及在语音中)编译器和IDE,您可以使用它们来代替Turbo C++.其中一些包括:
遗憾的是,一些学校/教师似乎迫使学生即使在这个时代也使用Turbo C++.不幸的是,这不是社区可以解决的问题.如果你发现自己处于这种状况,那么就应该做好准备,避免得到更多的外界帮助.
Lun*_*din 11
"Turbo C++"可能意味着众多编译器.在提出这个问题时,重要的是要包含版本号.
Borland Turbo C++高达3.1版本是经典蓝色背景IDE中的纯MS DOS编译器.这些大约在1989年到1992年之间发布,早在C++变得标准化之前很久就发生在1998年.因此他们使用了预先标准的C++方言.
最值得注意的是他们使用的是#include <iostream.h>
语法而不是标准#include <iostream>
,但也没有涵盖大量的C++特性,如名称空间,模板等.模板库STL还不是标准的一部分,所以与该库相关的一切都很漂亮与后来成为标准的不同.
在90年代后期,Borland发布了几个具有更好一致性的DOS/Windows编译器.虽然这些Windows版本与它非常接近,但在某个地方,它们仍然在努力完全符合C++ 98.
在90年代后期,他们放弃了名称"Turbo C++",转而支持Borland C++ Builder,它不仅仅是一个IDE,而是一个基于Delphi的完整RAD工具.这些编译器完全符合C++ 98和更高版本的C++ 03.
2005年左右,Borland将编译器作为其产品线的一部分.编译器变成了"Codegear",后来成为了Embarcadero.在那时,他们发布了一个免费版的Borland Builder,他们将其命名为"Turbo C++".这个版本完全符合C++ 03.
现在这些编译器被称为Embarcadero C++ Builder.我相信他们目前支持C++ 11和一些C++ 14.更多信息在这里.
毋庸置疑,作为一名学生,除了现代编译器之外,你不应该使用任何东西.使用1991年的MS DOS编译器在2018年学习C++时简直就是疯狂.它不仅适得其反,而且直接有害,并且会让你成为一个糟糕的C++程序员.如果你的学校强迫你使用Turbo C++ 3.1或更高版本,那么你的学校很糟糕,你的老师也非常无能.请将这篇文章链接到他们和他们的校长.
Turbo C++是一个非常古老的编译器,它与GNU C++编译器略有不同.您共享的代码将与GNU编译器完美配合,但要使用Turbo C++运行它,您需要进行一些更改:
1.将头文件的名称更改iostream
为iostream.h
2.并删除行"using namespace std"它不是在Turbo C++中需要.这是修改后的代码:
#include <iostream.h>
int main()
{
cout << "Hello, World!";
return 0;
}
Run Code Online (Sandbox Code Playgroud)