अंतर यह है कि कोई नामस्थान के अंदर है और दूसरा नहीं है। अन्यथा वे वही होना चाहिए। पहला सी संस्करण होना चाहिए और दूसरा सी ++ संस्करण है। सी ++ 11 से पहले यह अनिवार्य था कि सी मानक लाइब्रेरी संस्करण के बजाय प्रीफिक्स्ड संस्करणों सहित मानक नामस्थान के अंदर सभी सी परिभाषाएं लाती हैं। सी ++ में 11 इस प्रतिबंध को आराम दिया गया है क्योंकि यह हमेशा संभव नहीं होता है।
यह हो सकता है कि आपका कंपाइलर इस प्रकार को स्पष्ट रूप से परिभाषित करता है। किसी भी मामले में, आपको नामस्थान std
में संस्करण बनाने के लिए cstdint
शामिल करना चाहिए (और संभवतः वैश्विक नामस्थान में से एक)। stdint.h
सहित केवल अयोग्य संस्करण उपलब्ध कराया जाना चाहिए।
विजुअल स्टूडियो का पहला संस्करण इस शीर्षलेख के बिना भेज दिया गया है, इसलिए यह परेशानी होगी।
इस पागलपन के कारण, अधिकांश लोग तीसरे पक्ष के कार्यान्वयन पर वापस आ जाएंगे जैसे boost/cstdint.hpp
।
संपादित करें: वे वही हैं और एक ही उद्देश्य की सेवा करते हैं। नियम के रूप में: यदि आप std
नामस्थान में संस्करण का उपयोग करना चाहते हैं, तो cstdint
शामिल करें। यदि आप वैश्विक नामस्थान में से एक चाहते हैं, तो stdint.h
शामिल करें। C++ के लिए std
नामस्थान में से किसी एक का उपयोग करने की अनुशंसा की जाती है। एक नियम के रूप में: हमेशा जो भी आप उपयोग करते हैं उसे शामिल करें और अन्य शीर्षकों पर भरोसा न करें जिसमें आपके लिए चीजें शामिल हैं।
यह वीएस 2010 में एक त्रुटि है। मैं वीएस 2012 का परीक्षण नहीं कर सकता क्योंकि यूआई स्थापित करने के लिए बहुत उपयोग करने योग्य नहीं था। –
मेरा मानना है कि आपको std namespace – Caesar
@ कोडीग्रे के साथ प्राप्त करने के लिए 'cstdint' को शामिल करने की आवश्यकता है, ओपी वीएस2012 का उपयोग करने के लिए प्रतीत होता है, इसलिए UI उस अनुपयोगी नहीं है। –