सी में "ऑटो" कीवर्ड का लक्ष्य क्या है? सी ++ 0x के साथ इसे नया अर्थ मिला लेकिन क्या इसका मतलब यह है कि अगर मैं सी ++ 0x कंपाइलर पर पोर्ट सी कोड को बंद करता हूं तो मेरा कोड टूट जाएगा?सी के "ऑटो" कीवर्ड का लक्ष्य
उत्तर
Bjarne Stroustrup में उल्लेख है उसकी C++0x FAQauto
के बारे में:।
"ऑटो के पुराने अर्थ (" यह एक स्थानीय चर "है) अनावश्यक है और अप्रयुक्त कई समिति के सदस्यों लाइनों के लाखों लोगों के माध्यम से trawled कोड केवल कुछ मुट्ठी भर उपयोगों को ढूंढ रहा है - और उनमें से अधिकतर परीक्षण सूट में थे या बग्स दिखाई दिए। "
तो मुझे लगता है कि कंपेलरों को auto
के पुराने अर्थ को लागू करने के लिए मानक द्वारा मजबूर नहीं किया जाएगा।
यदि आपके कोड में auto
कीवर्ड है तो यह टूट जाएगा। सी और सी ++ प्रोग्रामिंग के लगभग 30 वर्षों में मैंने कभी भी ऐसा नहीं किया है जो मैंने किया था। कीवर्ड को पहले सी कंपाइलर में स्थानीय फ़ंक्शन वैरिएबल निर्दिष्ट करने के लिए पेश किया गया था, लेकिन कंपाइलर्स लगभग तुरंत चतुर हो गए थे, इसकी आवश्यकता नहीं थी, और इसका उपयोग करने वाले बहुत कम कोड आज जीवित रहेंगे - यही वजह है कि सी ++ 0x ने इसे रीसायकल करने के बजाय चुना एक नया कीवर्ड पेश करें जो पोर्टेबिलिटी समस्याओं का कारण बनता है।
C++ 0x में ऑटो कीवर्ड के प्रयोजन संकलक एक चर, जहां यह संभव है के प्रकार के बाहर काम करने की अनुमति के लिए है:
vector <int> v;
auto it = v.begin():
संकलक कि v.begin देख सकते हैं () को vector<int>::iterator
वापस करना होगा और इसलिए उस प्रकार का एक चर बना सकता है, जिसमें बहुत से कीबोर्डिंग या टाइपपीफ निर्माण को बचाया जा सकता है।
सी में, auto
निर्दिष्ट स्वत: भंडारण अवधि (के रूप में static
, extern
, register
के खिलाफ)। चूंकि यह डिफ़ॉल्ट है, मैंने कभी भी auto
किसी भी कोड में उपयोग नहीं किया है। हालांकि, मैंने बहुत सी नहीं किया है।
इसका शायद ही कभी उपयोग किया जाता है; इसका मतलब स्थानीय चर था। आधुनिक कंपाइलर जैसे वीएस -2010 सी ++ इसे new meaning देते हैं।
यह नया अर्थ सी ++ 0x मानक से ऊपर है जैसा ऊपर उल्लिखित – Stewart
यह उत्तर गलत है, following question देखें, मैं यहां एक संदर्भ के रूप में उत्तर छोड़ रहा हूं। auto
की
AFAIK C++ 0x के उपयोग auto
की सी पारम्परिक रूप से यह खंडन नहीं करता है। सी auto
में प्रकार के साथ एक साथ उपयोग किया जाता है।
auto char c1 = 'a'; // OK, old meaning of auto is still valid
auto c2 = 'b'; // OK, new meaning of auto (deduce c2 is a char)
केवल जगह है जहाँ यह कोड के अर्थ बदल सकता है जब ऑटो निहित int
शासन के साथ एक साथ इस्तेमाल किया गया था (प्रकार यदि निर्दिष्ट किया जाता है नहीं -> यह एक int
है) जो मामले दूसरी पंक्ति में मेरे उदाहरण में c2
int
टाइप किया गया था और अब यह char
प्रकार है।
जी ++, एफडब्ल्यूआईडब्ल्यू के साथ संकलित नहीं है। –
धन्यवाद @ नील, मैंने यह जानने के लिए एक नया प्रश्न पूछा कि कौन सही है (मुझे सी ++ 0x ड्राफ्ट कुछ भी नहीं मिला) – Motti
मुझे आश्चर्य हुआ कि उन्होंने सी ++ में अन्य सभी मौसा दिए जाने के लिए अनुमति नहीं दी सी संगतता का। ;) –
- 1. सी ++ ऑटो कीवर्ड। यह जादू क्यों है?
- 2. ऑटो कीवर्ड में अजीब व्यवहार सी ++ 11
- 3. ऑटो सी/सी ++
- 4. ऑटो कीवर्ड को घटाए गए प्रकार (क्लैंग या वीएस -2010)
- 5. सी ++ 'नए' कीवर्ड और सी
- 6. सी # का उपयोग कब करें "यह" कीवर्ड
- 7. सी ++/सीएक्स कीवर्ड
- 8. सी # रेफरी कीवर्ड उपयोग
- 9. सी # वर कीवर्ड प्रयोग
- 10. सी # कीवर्ड एक चर
- 11. सी # 'रेफरी' कीवर्ड, प्रदर्शन
- 12. सी # लिंक कीवर्ड?
- 13. सी ++ में "अच्छा" कीवर्ड?
- 14. सी # वर्चुअल कीवर्ड
- 15. सी ++ "कॉन्स" कीवर्ड स्पष्टीकरण
- 16. सी ++: ऑटो, या टाइपपीफ का उपयोग करें?
- 17. कीवर्ड
- 18. विम सी ++ ऑटो पूर्ण
- 19. ऑटो सेव - डब्ल्यूपीएफ सी #
- 20. सी ++ 11 "ऑटो" सेमेन्टिक्स
- 21. सी ++ ऑटो रूपांतरण
- 22. सी # में "उपयोग" निर्देशक कीवर्ड के विकल्प?
- 23. सी # लक्ष्य = "_ blank" एक LinkButton
- 24. "घटना" कीवर्ड का उद्देश्य
- 25. ऑटो कीवर्ड का उपयोग करते समय संरेखण 16 का सम्मान नहीं किया गया?
- 26. सी # डेटाग्रिड व्यू के आकार का ऑटो आकार बदलें
- 27. सी # ऑटो का पता लगाने के प्रॉक्सी सेटिंग्स
- 28. प्राइमेटिव्स का ऑटो बॉक्सिंग
- 29. स्वचालित रूप से व्युत्पन्न प्रकारों में सी ++ 11 ऑटो कीवर्ड को फिर से लिखना
- 30. सी ++/सीएलआई सी # के 'रीडोनली' कीवर्ड के समतुल्य
यह बहुत बढ़िया है, मुझे वेक्टर इटरेटर्स टाइप करने से नफरत है;) – identitycrisisuk
यह 'ऑटो' वाले कोड को क्यों तोड़ देगा? क्या पुराना अर्थ अभी भी वैध नहीं है? – Motti
@mottii ईमानदार होने के लिए, मुझे यकीन नहीं है - एक कंपाइलर निश्चित रूप से देख सकता है कि 'ऑटो int i;' नए अर्थ में ऑटो का उपयोग नहीं किया जा रहा है, लेकिन मुझे यकीन नहीं है कि मानक को ऐसा करने की आवश्यकता है या नहीं। –