C ++ 98 में मूल उद्देश्य यह था कि आप <cstdint>
C ++ का उपयोग करें , ताकि वैश्विक नामस्थान ( <cstdint>
विशेष रूप से नहीं , विशेष रूप से, यह केवल C ++ 11 में जोड़ा जाता है, लेकिन <c*>
सामान्य रूप से हेडर) को प्रदूषित होने से बचाने के लिए ।
हालांकि, कार्यान्वयन ने प्रतीकों को वैश्विक नामस्थान में वैसे भी रखने का प्रयास किया, और C ++ 11 ने इस अभ्यास की पुष्टि की [*]। तो, आपके पास मूल रूप से तीन विकल्प हैं:
- उपयोग
<cstdint>
और या तो पूरी तरह से प्रत्येक पूर्णांक प्रकार का उपयोग करें जिसे आप उपयोग करते हैं या फिर इसे using std::int32_t;
आदि के साथ गुंजाइश में लाते हैं (क्योंकि क्रिया के कारण कष्टप्रद है, लेकिन यह सही तरीका है कि इसे C ++ मानक पुस्तकालय में किसी भी अन्य प्रतीक के लिए पसंद करें)
- उपयोग
<stdint.h>
(थोड़ा खराब क्योंकि पदावनत)
<cstdint>
अपने कार्यान्वयन का उपयोग करें और मान लें कि प्रतीकों को वैश्विक नाम स्थान में रखा जाएगा (बहुत बुरा क्योंकि गारंटी नहीं है)।
व्यवहार में मुझे संदेह है कि एक बड़ी मात्रा में कोड अंतिम विकल्प का उपयोग करता है, बस इसलिए कि इसे कार्यान्वयन पर दुर्घटना से करना आसान है जहां <cstdint>
प्रतीकों को वैश्विक नाम स्थान में रखा जाता है। आपको पहले उपयोग करने का प्रयास करना चाहिए। दूसरे में एक गुण यह है कि यह केवल नाम के बजाय वैश्विक नाम स्थान में सामान रखने की गारंटी है। मुझे नहीं लगता कि यह विशेष रूप से उपयोगी है, लेकिन यदि आपकी प्राथमिकता है तो यह कुछ टाइपिंग को बचा सकता है।
एक चौथा विकल्प है, #include <cstdint>
जिसके बाद using namespace std;
कभी-कभी उपयोगी होता है लेकिन ऐसी जगहें हैं जिन्हें आपको नहीं रखना चाहिए using namespace std;
। अलग-अलग लोगों के पास अलग-अलग विचार होंगे जहां वे स्थान हैं, लेकिन "शीर्ष लेख फ़ाइल में शीर्ष स्तर पर" "cpp फ़ाइल में शीर्ष स्तर पर" से भी बदतर है, जो "सीमित दायरे में" से भी बदतर है। कुछ लोग कभी नहीं लिखते using namespace std;
हैं।
[*] इसका मतलब है कि C ++ मानक हेडर को वैश्विक नामस्थान में सामान रखने की अनुमति है लेकिन इसकी आवश्यकता नहीं है। इसलिए आपको उन प्रतीकों से टकराने से बचना होगा, लेकिन आप वास्तव में उनका उपयोग नहीं कर सकते क्योंकि वे नहीं हो सकते। मूल रूप से, C ++ में वैश्विक नाम स्थान एक खान क्षेत्र है, इससे बचने की कोशिश करें। एक तर्क हो सकता है कि समिति ने कार्यान्वयन द्वारा एक अभ्यास की पुष्टि की है जो using namespace std;
शीर्ष लेख फ़ाइल में शीर्ष स्तर पर चिपके हुए लगभग हानिकारक है - अंतर यह है कि कार्यान्वयन केवल सी मानक पुस्तकालय में प्रतीकों के लिए करते हैं, जबकि using namespace std;
यह C ++ के लिए करता है -दो प्रतीक भी। सी मानक में एक खंड है जो भविष्य के परिवर्धन के लिए आरक्षित नामों को सूचीबद्ध करता है। उन नामों को C ++ वैश्विक नामस्थान में भी आरक्षित करना पूरी तरह से मूर्खतापूर्ण विचार नहीं है, लेकिन यह आवश्यक नहीं है।
<cstdint>
। यहाँ त्रुटि मैं प्राप्त है:./misc.h:7:10: fatal error: 'cstdint' file not found
।