在c ++中可以两次包含相同的命名空间吗? 编译器不会给出任何错误,但仍然会影响
谢谢,
修改:
我的意思是
using namespace std;
// . . STUFF
using namespace std;
答案 0 :(得分:16)
这取决于你所说的'包含'。话说:
using namespace std;
...
using namespace std:
没关系。但是说:
namespace X {
...
namespace X {
会创建一个名为X :: X的嵌套命名空间,这可能不是您想要的。
答案 1 :(得分:8)
这种用法很好,如果你正在谈论的话:
文件:foo.h
namespace tools
{
class Widget
{
...
};
}
file:bar.h
namespace tools
{
class Gizmo
{
...
};
}
答案 2 :(得分:3)
同一个类/文件中有两次?这应该不是问题,但也不是必要的。我天真地假设你应该能够重构你的代码以避免这个问题。
答案 3 :(得分:1)
我不完全确定你的意思。您可以在一个命名空间中放置多个类(这就是整个想法)。每个类通常都有自己的文件,所以是的,你可以在多个文件中使用相同的命名空间。
虽然技术上不需要,但最好有一个表示您创建的命名空间层次结构的目录结构。
对于使用指令:编译器和/或智能感知很可能会给你一个警告(C#一个),但是没有效果。
答案 4 :(得分:1)
你在问下列是否合适?
using namespace std;
using namespace std;
没关系,但通常我更喜欢使用范围分辨率来引用命名空间元素。
例如:
std::vector
std::sort