अंतर मंगली पहचानकर्ता का नाम है ( _ZN12_GLOBAL__N_11bEबनाम _ZL1b, जो वास्तव में मायने नहीं रखता है, लेकिन दोनों को प्रतीक तालिका में स्थानीय प्रतीकों में इकट्ठा किया जाता है ( .globalasm निर्देश का अभाव )।
#include<iostream>
namespace {
int a = 3;
}
static int b = 4;
int c = 5;
int main (){
std::cout << a << b << c;
}
.data
.align 4
.type _ZN12_GLOBAL__N_11aE, @object
.size _ZN12_GLOBAL__N_11aE, 4
_ZN12_GLOBAL__N_11aE:
.long 3
.align 4
.type _ZL1b, @object
.size _ZL1b, 4
_ZL1b:
.long 4
.globl c
.align 4
.type c, @object
.size c, 4
c:
.long 5
.text
एक नेस्टेड अनाम नामस्थान के लिए:
namespace {
namespace {
int a = 3;
}
}
.data
.align 4
.type _ZN12_GLOBAL__N_112_GLOBAL__N_11aE, @object
.size _ZN12_GLOBAL__N_112_GLOBAL__N_11aE, 4
_ZN12_GLOBAL__N_112_GLOBAL__N_11aE:
.long 3
.align 4
.type _ZL1b, @object
.size _ZL1b, 4
अनुवाद इकाई में सभी प्रथम स्तर के अनाम नामस्थान एक दूसरे के साथ संयुक्त हैं, अनुवाद इकाई में सभी दूसरे स्तर के नामांकित अनाम नाम एक दूसरे के साथ संयुक्त हैं
एक अनाम नामस्थान में एक नेस्टेड (इनलाइन) नामस्थान भी हो सकता है
namespace {
namespace A {
int a = 3;
}
}
.data
.align 4
.type _ZN12_GLOBAL__N_11A1aE, @object
.size _ZN12_GLOBAL__N_11A1aE, 4
_ZN12_GLOBAL__N_11A1aE:
.long 3
.align 4
.type _ZL1b, @object
.size _ZL1b, 4
which for the record demangles as:
.data
.align 4
.type (anonymous namespace)::A::a, @object
.size (anonymous namespace)::A::a, 4
(anonymous namespace)::A::a:
.long 3
.align 4
.type b, @object
.size b, 4
आपके पास अनाम इनलाइन नामस्थान भी हो सकते हैं, लेकिन जहां तक मैं बता सकता हूं, inlineअनाम नाम स्थान पर 0 प्रभाव है
inline namespace {
inline namespace {
int a = 3;
}
}
_ZL1b: _Zइसका मतलब यह एक पहचाना हुआ पहचानकर्ता है। Lइसका मतलब है कि यह एक स्थानीय प्रतीक है static। 1पहचानकर्ता की लंबाई bऔर उसके बाद पहचानकर्ता हैb
_ZN12_GLOBAL__N_11aE _Zइसका मतलब यह एक पहचाना हुआ पहचानकर्ता है। Nयह एक नाम स्थान है इसका मतलब है 12गुमनाम नाम स्थान नाम की लंबाई है _GLOBAL__N_1, तो गुमनाम नाम स्थान नाम _GLOBAL__N_1, तो 1पहचानकर्ता की लंबाई है a, aपहचानकर्ता है aऔरE पहचानकर्ता बंद कर देता है कि एक नाम स्थान में रहता है।
_ZN12_GLOBAL__N_11A1aE ऊपर के समान ही है, इसमें एक और नाम स्थान स्तर है 1A
staticमें इस संदर्भ का उपयोग पूर्ववत था ; हालांकि अनाम नेमस्पेस एक बेहतर विकल्प हैstatic, लेकिन ऐसे उदाहरण हैं जहां यहstaticबचाव में आता है ।