फ़ाइल स्कोप पर C ++ 17 मानक ड्राफ्ट constका अर्थ हैstatic
यह जो उल्लेख किया गया था, उसके लिए यह उद्धरण है: https://stackoverflow.com/a/3709257/895245
C ++ 17 n4659 मानक ड्राफ्ट 6.5 "प्रोग्राम और लिंकेज":
3 एक नाम जिसमें नेमस्पेस स्कोप है (6.3.6) का आंतरिक लिंकेज है अगर यह नाम है
- (3.1) - एक चर, फ़ंक्शन या फ़ंक्शन टेम्पलेट जिसे स्पष्ट रूप से स्थिर घोषित किया गया है; या,
- (3.2) - गैर-वाष्पशील कास्ट-योग्य प्रकार का एक गैर-इनलाइन चर जिसे न तो स्पष्ट रूप से बाहरी घोषित किया जाता है और न ही पहले बाहरी लिंकेज के लिए घोषित किया जाता है; या
- (3.3) - एक अनाम संघ का डेटा सदस्य।
अनुलग्नक C (सूचनात्मक) संगतता, C.1.2 क्लाज 6: "मूल अवधारणाएं" का तर्क देता है कि इसे इस से क्यों बदला गया था:
6.5 [भी 10.1.7]
परिवर्तन: फ़ाइल गुंजाइश का एक नाम जिसे स्पष्ट रूप से कास्ट घोषित किया गया है, और स्पष्ट रूप से बाहरी घोषित नहीं किया गया है, में आंतरिक लिंकेज है, जबकि सी में यह बाहरी लिंकेज होगा।
Rationale: क्योंकि C ++ में अनुवाद के दौरान कास्ट ऑब्जेक्ट्स का उपयोग मानों के रूप में किया जा सकता है, यह फीचर प्रोग्रामर से प्रत्येक कॉन्स्टेंट ऑब्जेक्ट के लिए एक स्पष्ट इनिशियलाइज़र प्रदान करने का आग्रह करता है। यह सुविधा उपयोगकर्ता को एक से अधिक अनुवाद इकाई में शामिल स्रोत फ़ाइलों में कास्ट ऑब्जेक्ट डालने की अनुमति देती है।
मूल सुविधा पर प्रभाव: अच्छी तरह से परिभाषित सुविधा के शब्दार्थ में परिवर्तन।
परिवर्तित करने की कठिनाई: शब्दार्थ परिवर्तन।
व्यापक रूप से कैसे उपयोग किया जाता है: शायद ही कभी।
यह भी देखें: जब C में नहीं होता है तो C ++ में आंतरिक संबंध क्यों बनता है?
आप हेडर के बजाय क्या करना चाहते हैं
विस्तार से बताया गया है: C और C ++ में 'स्थैतिक स्थैतिक' का क्या अर्थ है?
- पूर्व C ++ 17:
externहेडर में, cpp फ़ाइल में परिभाषा
- C ++ 17 पोस्ट करें: हेडर पर इनलाइन वैरिएबल
staticशायद C ++ में सबसे अधिक ओवरलोड किया गया कीवर्ड है। आपके कोड का अर्थ व्यापक रूप से इस बात पर निर्भर करता है कि यह नाम स्थान के दायरे में है, वर्ग के दायरे में, या कार्यक्षेत्र पर। आप इसे स्पष्ट करना चाह सकते हैं।