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