我记得我读过一个用
启动所有源文件的教程using namespace std;
当我用我的GCC编译器测试它时,它接受了代码。但这样的代码是否有效?
答案 0 :(得分:2)
如果你在之前定义名称空间std
,它是有效的:
namespace std {}
using namespace std;
然而,这可能不是一个好主意,因为它对所有包含的标题施加了using
namespace std;
。
答案 1 :(得分:1)
是的,这完全有效。
实际上,再次阅读标题后。 。 。如果您在任何包含的标题之前包含它,那么不是这样。这是“有效的”,但不是很好的做法。
请参阅C++: What's happen when I use "using namespace xyz" before #include<headerxy>
答案 2 :(得分:1)
在我看来,使用使用命名空间std; 而不使用它的唯一区别是,当你使用它时,你可能会在以后的代码变量中遇到冲突(冲突名称)。 此外,它可能会污染其他人的命名空间,因为当您使用它时,您在命名空间std 中包含所有内容,因此建议您不要在头文件中使用它。但是你可以在cpp文件中使用它。
std :: cin 或 cin ,唯一不同的是懒惰imo。但是使用使用命名空间std; 是有效。
编辑:(有关参考资料和更多说明)
找到关于这个主题的两个参考文献,我想你会发现第二个更有用的是为什么它有效并且工作正常,但它被认为是不良做法一些案例。 请检查cplusplus和stackoverflow
行情:
例如,你可以使用:我建议你不要使用指令;使用声明做了很多 更有意义,虽然,就个人而言,我宁愿完全使用 合格的名字。
using std::cout;
using std::cin;
using std::endl;
而不是使用整个标准。
答案 3 :(得分:0)
大多数编译器都遵循标准,特别是像这样的基本规范将完全符合标准。但作为程序员,我从未使用过声明,除非有要求。我见过的大多数案例都与学校的课程有关。在实际生产中,我们必须对使用有所了解,这些声明将在我们开始使用它的地方附近。但是之前从未使用过包括虽然它有效!