std::size_t n = sizeof(long);
असल में, आप नहीं पूछा है कि क्या विशेष रूप से ऊपर पूर्णांक एक बुरा व्यवहार हो रहा है। Size_t का उपयोग, std namespace के साथ योग्यता, ...
सी ++ मानक कहता है (18.1), size_t मानक शीर्षलेख में परिभाषित एक प्रकार है। मैं सी भाषा से संभावित विरासत के बारे में किसी भी विचार और छाप छोड़ने का सुझाव दूंगा। सी ++ एक अलग और अलग भाषा है और इसे इस तरह मानना बेहतर है। इसकी अपनी मानक लाइब्रेरी है और सी ++ मानक लाइब्रेरी के सभी तत्वों को नेमस्पेस std के भीतर परिभाषित किया गया है। हालांकि, सी ++ कार्यक्रम में सी मानक पुस्तकालय के तत्वों का उपयोग करना संभव है।
मैं एक गंदे हैक के रूप में शामिल होने पर विचार करता हूं। सी ++ मानक बताता है कि हेडर की सामग्री सी मानक लाइब्रेरी से संबंधित शीर्षकों पर आधारित है, लेकिन मामलों की संख्या में, परिवर्तन लागू किए गए हैं। दूसरे शब्दों में, यह सी ++ हेडर में सी हेडर की सीधी प्रति & पेस्ट नहीं है।
size_t सी ++ में अंतर्निहित प्रकार नहीं है। यह निर्दिष्ट करने के लिए परिभाषित एक प्रकार है कि किस प्रकार का अभिन्न प्रकार आकार() ऑपरेटर के रिटर्न प्रकार के रूप में उपयोग किया जाता है, क्योंकि आकार का एक वास्तविक रिटर्न प्रकार कार्यान्वयन परिभाषित किया जाता है, इसलिए सी ++ मानक आकार_टी को परिभाषित करके एकीकृत करता है।
निम्नलिखित कार्यक्रम सभी सी ++ compilers पर संकलित करने के लिए उम्मीद की जा (कोई साथ शामिल है) हैं?
size_t foo()
{
return sizeof(long);
}
सी ++ मानक का कहना है (1.4):
नाम पुस्तकालय में परिभाषित नाम स्थान गुंजाइश (7.3) है। एक सी ++ अनुवाद इकाई (2.1) उपयुक्त मानक लाइब्रेरी हेडर (16.2) सहित इन नामों तक पहुंच प्राप्त करती है।
आकार_टी एक नाम है जो std namespace के भीतर परिभाषित किया गया है, इसलिए इस नाम का उपयोग करने वाले प्रत्येक प्रोग्राम में इस मामले में संबंधित शीर्षलेख शामिल होना चाहिए।
इसके बाद, 3.7.3 अध्याय का कहना है:
हालांकि, एसटीडी, एसटीडी :: bad_alloc, और std :: size_t की चर्चा करते हुए बीमार बनाई है जब तक कि नाम उचित हेडर सहित द्वारा घोषित किया गया है।
यह देखते हुए कि, size_t का उपयोग करने वाला प्रोग्राम लेकिन हेडर समेत प्रोग्राम खराब नहीं है।
सी में नामस्थान नहीं हैं। – wnoise
यह सी ++ में बनाया गया है, जब आप #शामिल करते हैं, और नामस्थान std में है। नीचे मेरा जवाब देखें। –
यह 'इस सवाल से पूछने का एक और तरीका नहीं है' - यह एक अलग सवाल है: मुख्य रिटर्न int। – fizzer