使用命名空间两次

时间:2009-06-16 12:24:59

标签: c++ namespaces

在c ++中可以两次包含相同的命名空间吗? 编译器不会给出任何错误,但仍然会影响

谢谢,

修改:
我的意思是

using namespace std;

// . . STUFF
using namespace std;

5 个答案:

答案 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