为什么一个简单的“Hello World”风格的程序不能用Turbo C编译?
作者:互联网
我已经开始为我的编程课学习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'
这个非常简单的程序出了什么问题?我该如何纠正这些错误?
解决方法:
这个程序没问题. (除了一些风格问题 –
不推荐使用命名空间std).问题出在Turbo C上.这是一个非常古老的软件.它实现了C语言,即所谓的ANSI前C语言,在本千年开始之前就完全不再使用了. C的第一个ANSI标准发布于1998年,然后是2003版本,2011版本,2014版本,2017版本,现在我们预计2020版本将正式发布.这些标准修订中的每一个都对语言带来了或多或少的重大变化.
对于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学习编程,但我强烈建议在人性化的情况下避免这种情况,原因如下:
>您将学习一种与业内流行语言有些相似的语言,但仍然是非常不同的,没有充分的理由.如果您计划使用C进行真正的软件开发,则必须重新学习.现在学习现代C要容易得多.
>目前还没有关于Turbo C的文献.您可以在互联网或书籍中找到的近100%的C材料不能直接应用于Turbo C.有些只需要很小的适应性,而其他材料则完全无法使用.几乎可以立即获得的唯一帮助来源是内置的Turbo C帮助.
>很少有人记得Turbo C.在论坛上提问时,请始终指定您使用的是ANSI之前的方言,以过滤掉面向现代语言版本的响应.您可能会得到一堆评论建议您立即停止并切换到您提出的每个问题的现代编译器.
有许多现代免费(如beer,以及speech)编译器和IDE,你可以用来代替Turbo C.其中一些包括:
> Visual C++ Community Edition是Microsoft的IDE和编译器
> Code::Blocks是一个轻量级IDE.在Windows上,它附带了一个有点过时的编译器,但您可以自己安装更现代的编译器
> Eclipse CDT是一个功能强大的跨平台IDE.它不附带自己的编译器,因此您需要安装单独的编译器.在Windows上,使用例如MinGW.
> Many more
>此外,还有许多在线编译器,如http://ideone.com,https://www.onlinegdb.com/和http://coliru.stacked-crooked.com/,以及many more(这些编译器主要用于尝试创意和编写非常小的程序).
> Clang/LLVM和GCC都是支持最新版本C的free software编译器.
遗憾的是,一些学校/教师似乎甚至在这个时代强迫学生使用Turbo C.不幸的是,这不是社区可以解决的问题.如果你发现自己处于这种状况,那么就应该做好准备,避免得到更多的外界帮助.
标签:c,turbo-c-2,c-faq 来源: https://codeday.me/bug/20190915/1805324.html