gpt4 book ai didi

c++ - 嵌套匿名命名空间

转载 作者:行者123 更新时间:2023-12-02 10:29:39 28 4
gpt4 key购买 nike

以下几行是等效的(从c++ 17开始):

namespace A { namespace B {} }
namespace A::B {}
下面的行是否有合格的等效项?
namespace A { namespace {} }
谢谢

最佳答案

匿名 namespace (也称为未命名 namespace )成员占据全局范围,并且在文件中的声明之后的所有范围中均可访问。我们可以无限制地访问它们。
如果考虑以下程序:

#include <iostream>

// named namespace
namespace A {
// unnamed namespace
namespace {
int a;
}
}

int main(void) {
// initializing an unnamed namespace member
// you need to use `::` because that unnamed namespace
// is containing in a named namespace `A`
A::a = 10;

// calling the unnamed namespace member
std::cout << A::a << std::endl;

return 0;
}
您必须使用限定符 ::,即 A::a,如果您定义了未命名的命名空间,则不再需要使用示例中给出的任何限定条件:
// unnamed namespace
namespace {
int a;
}

int main(void) {
// simply accessed
a = 10;
}

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

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