C++ 多次包含命名空间

C++ 多次包含命名空间,c++,c++11,C++,C++11,如果多次包含同一名称空间,是否会出现问题 #include<iostream> using namespace custom; using namespace custom; #包括 使用名称空间自定义; 使用名称空间自定义; 是否可以像头文件一样对名称空间应用guard,这样名称空间就不会被多次包含?(如#ifndef…如果您有多个名称空间指令,则没有问题。它具有相同的效果。 using namespace指令编写一次或多次后,会将名称空间中的所有符号导入当前名称空间。最好不要

如果多次包含同一名称空间,是否会出现问题

#include<iostream>
using namespace custom;
using namespace custom;
#包括
使用名称空间自定义;
使用名称空间自定义;

是否可以像头文件一样对名称空间应用guard,这样名称空间就不会被多次包含?(如#ifndef…

如果您有多个名称空间指令,则没有问题。它具有相同的效果。

using namespace指令编写一次或多次后,会将名称空间中的所有符号导入当前名称空间。

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

名称空间指令和预处理器指令之间存在差异。你可以写两遍,但那不会有任何效果

第二,由于这不是一个问题,因此没有办法“防止”这种情况。命名空间指令不需要保护,也不需要重复

这篇文章传达了一点关于名称空间可能出现错误的地方。如果此信息是无关的,则表示歉意-只是试图提供清晰的信息

--

名称空间只是代码或变量的一个限制区域。它用于避免变量或函数名等之间的冲突。请查看以下代码

这是一个有效的代码

namespace-st
{
int i=0;
}
名称空间st
{
int j=0;
}
使用名称空间st;
int main(int argc,char*argv[])
{
i=15;
j=10;

coutPossible duplicate:在头文件中包含using指令是一种不好的做法。这将毒害包含它的所有源文件。
#g不止一次被包含?听起来你在这里最多有10种不好。而且,不用说,要包含的文件被称为头文件。是的,只是为了补充一些解释:任何想要使用你的类的人都会被迫同时使用你的命名空间!尽管这是一个好的实践,但绝对没有e证明OP正在做这件事。我猜是一个假设,因为这是唯一的一种导致同一命名空间声明多次发生的明智的方案,当然没有人傻到把它写在同一C++文件中。我不包括头文件中的命名空间。它包含在CPP中。在这种情况下,没有理由做,或者不要这样做。除了硬盘上浪费的20个字节之外,这并没有什么坏处,除非这会将您推到给定文件的块上,否则很可能归结为一无所有。导入名称的列表能否在两次出现之间更改,因此第二次会添加更多信息?或者如果您使用命名空间std;
在您拥有任何
std
符号之前,后续出现的符号是否也会“自动”导入?@JonathanLeffler:否。该名称空间中存在的任何符号都必须在编译时存在,否则任何对象都无法正确链接。
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;
}
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;

}