17

私は、会社とはもう働いていない同僚によって書かれたいくつかのコードに取り組んでおり、次のコードを見つけました: (以下では省略しています)

namespace NsA { namespace NsB { namespace NsC {

    namespace { 
        class A { /*etc*/ };
        class B { /*etc*/ };
    }    

    namespace {
        class C { /*etc*/ };
    }
} } }

3 行目と 8 行目の名前空間コマンドの目的がわかりません。
名前のない名前空間エントリの目的を誰か説明できますか?
ありがとう

4

1 に答える 1

36

これは「匿名名前空間」です。これは、「翻訳単位」ごと (つまり、CPP ファイルごと) に一意であることが保証されている隠し名前空間名を作成します。

これは事実上、その名前空間内のすべてのアイテムがそのコンパイル単位の外側から隠されていることを意味します。それらは同じファイルでのみ使用できます。名前のない名前空間に関するこの記事も参照してください。

于 2008-11-25T15:34:25.097 に答える