如果多次包含相同的命名空间会有问题吗?
#include<iostream>
using namespace custom;
using namespace custom;
Run Code Online (Sandbox Code Playgroud)
是否可以将guard应用于名称空间之类的头文件,以便不会多次包含名称空间?(比如#ifndef ...)
最好不要在标题中使用"using namespace".
命名空间指令和预处理器指令之间存在差异。你可以写两次,但这不会有任何帮助。
其次,没有办法“防范”这一点,因为这不是一个问题。命名空间指令不需要被保护,也不需要重复。
这篇文章传达了一些关于命名空间可能出现错误的地方。如果此信息无关,我们深表歉意 - 只是试图提供清晰度。
命名空间只是代码或变量的声明区域。它用于避免变量或函数名称等之间的冲突,请查看以下代码。
这是一个有效的代码
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;
}
Run Code Online (Sandbox Code Playgroud)
现在尝试这个。这段代码会给你一个错误“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;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您声明了两个具有相同名称的命名空间,那么这是正确有效的。但如果两个命名空间包含相同的对象,则会抛出错误。