[英]Nested Anonymous Namespace
以下幾行是等效的(從 c++17 開始):
namespace A { namespace B {} }
namespace A::B {}
下面的行是否有合格的等價物?
namespace A { namespace {} }
謝謝
匿名命名空間(也稱為未命名命名空間)成員占據全局 scope 並且可以在文件中聲明之后的所有范圍內訪問。 我們可以在沒有任何條件的情況下訪問它們。
如果您考慮以下程序:
#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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.