gpt4 book ai didi

c++ - 嵌套未命名的命名空间?

转载 作者:IT老高 更新时间:2023-10-28 12:39:33 25 4
gpt4 key购买 nike

当使用未命名的命名空间时,如果它嵌套在另一个命名空间中,会有什么问题吗?例如,以下代码中 Foo1.cpp 和 Foo2.cpp 之间是否有任何真正的区别:

// Foo.h
namespace Foo
{
void fooFunc();
}

// Foo1.cpp
namespace Foo
{
namespace
{
void privateFunction()
{
...
}
}

void fooFunc()
{
privateFunction();
}
}

// Foo2.cpp
namespace
{
void privateFunction()
{
...
}
}

namespace Foo
{
void fooFunc()
{
privateFunction();
}
}

最佳答案

未命名的命名空间可以被视为具有您不知道的唯一名称的普通命名空间。根据 C++ 标准 7.3.1.1:

An unnamed-namespace-definition behaves as if it were replaced by

  namespace unique { /* empty body */ }
using namespace unique;
namespace unique { namespace-body }

翻译单元中所有出现的唯一性都被相同的标识符替换,并且该标识符不同于整个程序中的所有其他标识符。

没有其他问题。

关于c++ - 嵌套未命名的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2094072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com