使用命名空间std;在头文件中

using namespace std; in header file

本文关键字:文件 命名空间 std      更新时间:2023-10-16

一些人声称using namespace std;是不好的做法。另一些人则说,在合适的地方可以。但是每个人都同意把它放在头文件中是被禁止的。

亲爱的读者,谁能从Bjarne Stroustrup自己的网站上解释一下呢?

http://www.stroustrup.com/Programming/Graphics/std_lib_facilities.h

他甚至没有把它放在你可能注意到的最上面,它在下面大约50行。

这是怎么回事?是恶意的黑客通过在他的网站上放坏代码来败坏他的名声吗?

你读了文件开头的注释了吗?

简单的"编程:c++的原理和实践"课程头在头几周使用。它提供了最常见的标准头文件(全局命名空间中的)和最小的异常/错误支持。

学生:请不要试图理解标题的细节。一切都会解释清楚的。这个标头的主要用途是你不需要一次理解所有的概念。修改后的4月25、2010:添加了simple_error()

这样做的目的是让您可以开始学习该语言,而不必第一天学习名称空间,也不必担心需要包含哪些标准头文件。

鉴于这是一个课程标题,我认为学生应该包括它,然后以这种方式使用大多数标准库。我很惊讶Stroustrup用这种方式教它(在我看来,这仍然是一种糟糕的做法),但这确实意味着他少了一点语法来解释给他的学生。我不认为任何非课程应用程序(或者更糟的是,库)应该包含它,所以它在某种程度上是可以接受的。

我仍然认为这是非常糟糕的风格,说标准的东西必须以std::为前缀会更好。

首先,那是教学材料,因此远非相同。第二,那又怎样?每个人都会犯错误或维护遗留头文件。第三,仅仅因为你发明了一门语言,并不能使你永远掌握一切——尤其是当有一个标准委员会的时候。