为什么在新的 IDE 中必须使用命名空间标准,而用 Turbo C++/Borland C++ 编写的程序不需要命名空间标准?

Why is it mandatory to use namespace std in new IDEs whereas the programs written in Turbo C++/Borland C++ don't require namespace std?

为什么在新编译器中必须使用 namespace std 而用 Turbo C++/Borland C++ 编写的程序不需要命名空间 std?

这适用于旧编译器

#include <iostream.h>

int main () {
   cout << "Hello Programmers";

   return 0;
}

但是我们必须在新的编译器中编写下面给定的程序而不是上面的程序,因为上面的程序在新的编译器中不起作用。

#include <iostream>
using namespace std;

int main () {
   cout << "Hello Programmers";

   return 0;
}

那是因为 turbo-c++ 甚至在任何 c++ 标准发布之前就发布了,而且他们没有引入 std 命名空间。

从那以后就再也没有更新过。

此外,使用 using namespace std; 语句不是强制性的,但是 rather discouraged.

代码应该是:

#include <iostream>

int main () {
   std::cout << "Hello Programmers";
}

#include <iostream>
int main () {
   using std::cout;    
   cout << "Hello Programmers";
}

关于 turbo-c++ 的 IMO 问题这次也很无用。它已经过时,并且与现代 C++ 无关。
如果你的教授/老师强迫你使用它1,告诉他们他们做错了并且不要以任何方式教授 c++。


1)我知道这在印度学校很常见,但这只是一种糟糕的做法,而且没有合理的推理。
可能是他们希望您从头开始教一些东西,因为 turbo-c++ 不支持 std::vector 等容器。
但我仍然认为这是错误的方法,因为手动内存管理是高级的东西,不应该用来迷惑初学者。

首先,不是IDE题,而是C++编译器(C++语言实现)题。

第一个 TurboC/BorlandC 是几十年前发布的,当时 C++ 中还没有命名空间。

我可能有点胡思乱想,但 从不 强制使用 using namespace std;。请参阅 here 了解为什么它被认为是不好的做法。

您的第一个版本可能 "work" 在某些古老的非标准兼容编译器中。

你应该做的是写

#include <iostream>    
int main () {
   std::cout << "Hello Programmers";    
   return 0;
}

如果你很懒,你可以使用

#include <iostream>
using std::cout;

int main () {
   cout << "Hello Programmers";
   return 0; 
}

using namespace std;的版本在技术上也是正确的,但在更大的项目中会导致各种讨厌的问题。