2

可能重复:
使用命名空间标准的排序;包括?

我记得我读过一个教程,它的所有源文件都是用

using namespace std;

当我用我的 GCC 编译器测试它时,它接受了代码。但是这样的代码有效吗?

4

4 回答 4

2

它是有效的,前提是您在之前定义了命名空间std

namespace std {}
using namespace std;

然而,这可能不是一个好主意,因为它对using namespace std;所有包含的标题强加了一个。

于 2012-03-07T09:53:13.080 回答
1

Yes, it's perfectly valid.

Actually, after reading the title again . . . If you include it before any included headers, not so much. It's "valid", but not good practice.

See C++: What's happen when I use "using namespace xyz" before #include<headerxy>

于 2012-03-07T09:48:54.577 回答
1

在我看来,使用using namespace std;的唯一区别;而不使用它,是因为当您使用它时,您以后可能会在代码变量中遇到冲突(名称冲突)。此外,它可能会污染其他人的命名空间,因为当您使用它时,您会将所有内容都包含在命名空间 std中,因此建议您不要在头文件中使用它。但是否在 cpp 文件中使用它取决于您。

std::cincin,唯一的区别是 imo 懒惰。但是使用using namespace std; 有效的。

编辑:(用于参考和更多说明)

找到关于该主题的这两个参考资料,我认为您会发现第二个参考资料对为什么它有效且工作正常更有帮助,但在某些情况下它被认为是不好的做法。请检查cplusplusstackoverflow

引号:

我建议你避免使用指令;使用声明更有意义,尽管就个人而言,我宁愿使用完全限定的名称。

例如,您可以使用:

using std::cout;
using std::cin;
using std::endl;

而不是使用整个标准。

于 2012-03-07T10:03:43.057 回答
0

大多数编译器都遵循标准,尤其是像这样的基本规范将完全符合标准。但作为一名程序员,除非需要,否则我从不使用声明。我见过的大多数案例都与学校的课程有关。在实际生产中,我们必须理解用法,并且这些声明将在我们开始使用它的地方附近进行。但是以前从未使用过,尽管它有效!

于 2012-03-07T09:54:42.733 回答