多次包含命名空间

时间:2013-06-17 18:17:43

标签: c++ c++11

如果多次包含相同的命名空间会有问题吗?

#include<iostream>
using namespace custom;
using namespace custom;

是否可以将guard应用于名称空间之类的头文件,以便命名空间不会被多次包含? (比如#ifndef ......)

3 个答案:

答案 0 :(得分:5)

最好不要在标题中使用“using namespace”。

答案 1 :(得分:4)

如果您有多个命名空间指令,则没有问题。它具有相同的效果 写入一次或多次using namespace指令将名称空间中的所有符号导入当前名称空间。

答案 2 :(得分:4)

命名空间指令和预处理程序指令之间存在差异。你可以写两次,但这不会让你到任何地方。

其次,没有办法防范“反对”,因为它不是问题。命名空间指令不需要保护,也不需要重复。

这篇文章传达了一些关于命名空间可能出错的地方。如果这些信息是无关紧要的,请道歉 - 只是想提供清晰度。

Pintu Shukla's post -

  

NameSpace只是代码的一个Declerative Region或您的variable.it用于避免变量或函数名称之间的冲突等,请查看以下代码。

     

这是一个有效的代码

namespace st
{
int i =0;
}
namespace st
{
 int j =0;
}

using namespace st;

int main(int argc, char* argv[])
{
i=15;
j =10;
cout<<i<<j;
return 0;
}
  

现在尝试这个。这段代码会给你一个'i'的错误:重新定义   和多次初始化

     

代码块

namespace st
{
int i = 0
}

namespace st
{
int i =0;
}

using namespace st;

int main(int argc, char* argv[])
{
i=15;
cout<<i;

return 0;

} 
  

因此,如果您已声明两个具有相同名称的命名空间正确   有效。但如果两个命名空间都包含相同的对象,则会抛出错误