簡體   English   中英

嵌套匿名命名空間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM