【问题标题】: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? [duplicate]为什么在新的 IDE 中必须使用命名空间 std,而用 Turbo C++/Borland C++ 编写的程序不需要命名空间 std? [复制]
【发布时间】:2019-08-23 12:10:49
【问题描述】:

为什么在新编译器中必须使用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++ 代码。您需要切换到更当前的 C++ 编译器。
  • 在 linux/bsd/macOS 上考虑 GCC 或 clang,在 windows 上考虑 MinGW(或者,如果你坚持,MSVC)。

标签: c++ namespaces std turbo-c++


【解决方案1】:

这是因为 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 这样的容器。
但我仍然认为这是错误的做法,因为手动内存管理是高级的东西,不应该用来迷惑初学者。

【讨论】:

    【解决方案2】:

    我可能会很生气,但从不强制使用using namespace std;。请参阅here 了解为什么它被认为是不好的做法。

    您的第一个版本可能在一些古老的非标准兼容编译器中“工作”。

    你应该做的是写

    #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;的版本在技术上也是正确的,但是在更大的项目中会导致各种令人讨厌的问题。

    【讨论】:

    • '不需要返回0; from main'——有些人认为不这样做是不好的做法,尽管...
    • @Aconcagua 我不同意,但感谢您指出,我会重新添加它,因为它是一个不同的主题。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 2015-12-19
      • 2020-06-06
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多