我在一些人中集成了一些C ++,发现我们采用了两种 有关使用使用命名空间命令的不同策略。
为了清洁源代码,两者中哪一个是最正确的解决方案?
namespace foo
{
using namespace bar;
}
或
using namespace bar;
namespace foo
{
}
非常感谢你的帮助,
吨。
答案 0 :(得分:7)
这两者并不相同。在第一种情况下,名称空间bar
将在名称空间foo
中导入,因此对于每个bar::x
,您可以将其作为foo::x
进行访问。在后者中,名称空间bar
被导入全局名称空间(或包装它们的名称空间),并且可以作为::x
访问。
我建议您始终为您选择最窄的解决方案。即使只是在您实际需要它的函数中包含命名空间。所以,如果你有疑问,请选择第一个。
答案 1 :(得分:0)
这个问题已经回答了,但我想重申Toby Speight
提出的观点。
永远不要写using namespace bar
之类的东西。
良好做法是使用using
作为长/层次namespaces
的别名辅助。像
using po = boost::program_options;
然后使用
po.notify(vm);
有问题的两个备选方案中的任何一个仅适用于讨论或访谈。