【问题标题】:#include<iostream.h> works well in turboc++ but not in Visual studio. why?#include<iostream.h> 在 turboc++ 中效果很好,但在 Visual Studio 中效果不佳。为什么?
【发布时间】:2015-02-22 11:19:40
【问题描述】:

我正在使用 turboc++ 4.0 和 Visual Studio 2013。我刚开始学习编程。当我写代码时。

#include<iostream.h>
#include<conio.h>
int main()
{
cout<<"hello!";
getch();
return 0;
}

它在turbo中运行良好,但是visual stdio显示错误

致命错误 C1083:无法打开包含文件:'iostream.h':没有这样的文件或目录。

当我使用时

using namespace std;

它显示另一个关于使用 getch(); 的错误。

每个编译器都有自己的语法吗?

【问题讨论】:

标签: c++ visual-studio turbo-c++


【解决方案1】:

“每个编译器都有自己的语法吗?”

不,每个编译器都需要实现一个标准。
Turbo-C++ 是在任何标准建立之前制作的,只是目前唯一没有实现它们的编译器。

编写程序的标准兼容方式如下:

#include <iostream>

int main() {
    std::cout<<"hello!" << std::endl;
    char dummy;
    std::cin >> dummy;
}

注意:你不应该使用using namespace std;,而是在需要的时候显式放置std::范围,或者使用using std::cout cout;等。

【讨论】:

  • 该注释在两个方面是非常糟糕的建议:(1)我们的语言功能可供我们酌情使用,using namespace std; 通常是合适的,其中一种合适的情况是制作预标准代码可与现代编译器一起使用,并且 (2) 它给人的印象是,这种不要思考,只是盲目地遵循机械规则的方法是有用且实用的。它不是。盲目地遵循机械规则的最终结果是质量非常低,代码复杂,时间浪费很多。
  • 特别是,在目前的情况下,用std:: 限定所有相关标识符的工作可能会令人望而却步。所以这确实是一个非常糟糕的建议。
【解决方案2】:

Turbo C++ 起源于 1990 年代中期或早期,在 C++ 标准化之前。

当时 C++ 的有效标准是 ARM,即 Bjarne Stroustrup 和 Margaret Ellis (IIRC) 编写的 Annotated Reference Manual,它使用了&lt;iostream.h&gt;

随着 1998 年的第一次标准化,&lt;iostream.h&gt; 被删除,取而代之的是 &lt;iostream&gt;。标准标头将cincout 放在命名空间std 中,因此您不能只更改标头名称。不能保证,但您也许可以通过编写代码来使您的代码工作

#include <iostream>
using namespace std;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 2020-08-01
    • 1970-01-01
    • 2015-10-11
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多