में अज्ञात नेमस्पेस के भीतर प्रतीकों का लिंकेज C++ में, किसी अज्ञात नेमस्पेस में फ़ंक्शन या चर डालने से इसकी लिंक आंतरिक हो जाती है, i। ई। फ़ाइल स्तर पर static
घोषित करने के समान, लेकिन idiomatic C++।नियमित नेमस्पेस
सामान्य नामस्थान के भीतर एक अज्ञात नेमस्पेस के बारे में क्या? क्या यह अभी भी आंतरिक संबंध की गारंटी देता है?
// foo.cpp
void func1() {
// external linkage
}
static void func2() {
// internal linkage
}
namespace {
void func3() {
// internal linkage
}
}
namespace ns1 {
void func4() {
// external linkage
}
namespace {
void func3() {
// still internal linkage?
}
}
}
गलत धारणा। एक एनीनीमस नेमस्पेस के अंदर चर के बाहरी संबंध होते हैं, जब तक कि 'स्थिर' घोषित न किया जाए। – MSalters
@MSalters: मुझे लगता है कि सी ++ 11 के साथ यह बदल गया है। '§3.5/4: एक अनाम नामस्थान या एक नामांकित नामस्थान के भीतर प्रत्यक्ष या परोक्ष रूप से घोषित एक नामस्थान आंतरिक संबंध है। अन्य सभी नेमस्पेस में बाहरी लिंकेज है। – legends2k
@ legends2k: यह एक और परिवर्तन का हिस्सा है, जिसने उन नामों को टेम्पलेट तर्क के रूप में मान्य किया है (सी ++ 03 में, टेम्पलेट तर्कों को बाहरी लिंकेज की आवश्यकता होती है, जो एक अनाम नामस्थान में परिभाषित स्थिरांक से संतुष्ट था) – MSalters