পার্থক্যটি ম্যাঙ্গেলড আইডেন্টিফায়ারটির নাম ( _ZN12_GLOBAL__N_11bE
বনাম _ZL1b
, যা আসলেই কিছু যায় আসে না, তবে তারা উভয়ই প্রতীক টেবিলের স্থানীয় প্রতীকগুলিতে একত্রিত হয় ( .global
asm ডিরেক্টরের অনুপস্থিত ))।
#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
উদ্ধারকালে এটি ব্যর্থ হয় ।