-1

如果多次包含同一个命名空间会不会有问题?

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

是否可以对像头文件这样的命名空间应用保护,这样命名空间就不会被多次包含?(如#ifndef ...)

4

3 回答 3

5

最好不要在标题中使用“使用命名空间”。

于 2013-06-17T18:22:06.960 回答
5

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

其次,没有办法“防止”这种情况,因为这不是问题。命名空间指令不需要被保护,也不需要重复。

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

Pintu Shukla 的帖子——

命名空间只是您的代码或变量的声明区域。它用于避免变量或函数名称等之间的冲突,请查看以下代码。

这是一个有效的代码

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;

} 

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

于 2013-06-17T18:54:34.793 回答
4

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

于 2013-06-17T18:20:13.420 回答