C++ में स्टैटिक फ़ंक्शंस की तुलना में अनाम नेमस्पेस को क्यों प्राथमिकता देनी चाहिए?
सभी को नमस्ते! मैं एक शुरुआती C++ डेवलपर हूँ, और "इंटरनल लिंकेज" (internal linkage) विषय का अध्ययन करते समय, मुझे फ़ंक्शंस या वेरिएबल्स को एक ट्रांसलेशन यूनिट (translation unit) के लिए लोकल बनाने के दो तरीके मिले।
पहला तरीका ग्लोबल फ़ंक्शंस और वेरिएबल्स के लिए `static` कीवर्ड का उपयोग करना है। उदाहरण के लिए:
```cpp
// file.cpp
static void helperFunction() {
// ... कुछ इम्प्लीमेंटेशन
}
static int internalCounter = 0;
```
दूसरा तरीका सब कुछ एक अनाम नेमस्पेस (unnamed namespace) में रखना है:
```cpp
// file.cpp
namespace {
void helperFunction() {
// ... कुछ इम्प्लीमेंटेशन
}
int internalCounter = 0;
}
```
मैं समझता हूँ कि दोनों तरीके सिंबल को केवल इस फ़ाइल के अंदर ही विज़िबल बनाते हैं। लेकिन मैं अक्सर अनुभवी लोगों से सुनता हूँ...