सी ++ मानक पहचानकर्ताओं में डॉलर संकेतों का उपयोग करने के बारे में क्या कहता है, जैसे कि Hello$World
? क्या वे कानूनी हैं?सी ++ 03 में पहचानकर्ताओं में डॉलर-संकेतों की अनुमति है?
उत्तर
एक सी ++ पहचानकर्ता निम्न में से किसी भी से बना हो सकता है: _ (अंडरस्कोर), अंक 0-9, अक्षर ए-जेड (दोनों ऊपरी और निचले मामले) और एक संख्या से शुरू नहीं हो सकते हैं।
कई अपवाद हैं क्योंकि सी 99 मानक को एक्सटेंशन की अनुमति देता है (उदा। visual studio)।
वे अवैध हैं। पहचानकर्ताओं में एकमात्र कानूनी पात्र अक्षर, संख्याएं और _ हैं। पहचानकर्ता भी संख्याओं से शुरू नहीं कर सकते हैं।
FYI करें: हालांकि मानक जीसीसी द्वारा अवैध रूप से आम तौर पर उन्हें अनुमति देता है, http://gcc.gnu.org/onlinedocs/gcc/Dollar-Signs.html#Dollar-Signs – lothar
देखना यह पिछड़े संगतता अनुमति है। इसका उपयोग किसी भी आधुनिक कोड के लिए नहीं किया जाना चाहिए। –
वे सी ++ में कानूनी नहीं हैं। हालांकि कुछ सी/सी ++ व्युत्पन्न भाषाएं (जैसे जावा और जावास्क्रिप्ट) उन्हें अनुमति देते हैं।
अवैध। मुझे लगता है कि डॉलर के संकेत और बैकटिक मेरे कीबोर्ड पर एकमात्र विराम चिह्न हैं जो सी ++ में कहीं भी उपयोग नहीं किए जाते हैं ("%" चिह्न प्रारूप स्ट्रिंग में है, जो सी मानक के संदर्भ में सी ++ में हैं)।
% मॉड्यूलस ऑपरेटर भी है। – RBerteig
आह, धन्यवाद। वह मेरे दिमाग से बच निकला था। –
@ अक्षर मत भूलना –
कानूनी नहीं है, लेकिन यदि अधिकांश कंपेलरों का समर्थन नहीं करते हैं, तो नोट करें कि यह मंच पर निर्भर हो सकता है, इस प्रकार हाथ पर जीसीसी असेंबली प्रतिबंधों के कारण उनका समर्थन नहीं करता है।
प्रासंगिक अनुभाग "2.8 पहचानकर्ता [lex.name]" है। मूल चरित्र सेट से, केवल वैध वर्ण ए-जेड ए-जे 0-9 और _ हैं। हालांकि, é (यू + 00 ई 9) जैसे पात्रों की भी अनुमति है। आपके कंपाइलर के आधार पर, आपको \ u00e9 के रूप में प्रवेश करने की आवश्यकता हो सकती है, हालांकि।
सी ++ 03 में, पहले दिए गए उत्तर सही हैं: वे अवैध हैं। C++11 में स्थिति फिर भी बदल दिया है:
जवाब यहाँ है "शायद":
अनुसार करने के लिए §2.11, पहचानकर्ता, अंक और पहचानकर्ता-nondigits शामिल हो सकते हैं उत्तरार्द्ध में से एक के साथ शुरू । के बाद से सी ++ 11 वे सार्वभौमिक-चरित्र-नाम (जैसे \uBEAF
, \UC0FFEE32
), और अन्य कार्यान्वयन से परिभाषित वर्ण शामिल पहचानकर्ता-nondigits अलावा सामान्य a-z
, A-Z
कर रहे हैं और अंडरस्कोर,। तो पहचानकर्ता में $
का उपयोग करने पर यह कार्यान्वयन परिभाषित किया गया है। वीसी 10 और ऊपर इसका समर्थन करता है, शायद पहले के संस्करण भी। यह こんばんは
जैसे पहचानकर्ताओं का भी समर्थन करता है।
लेकिन: मैं उनका उपयोग नहीं करता। पहचानकर्ताओं को यथासंभव पठनीय और पोर्टेबल के रूप में बनाओ। $
कार्यान्वयन परिभाषित किया गया है और इस प्रकार पोर्टेबल नहीं है।
- 1. सी ++ 03
- 2. परफेक्ट फ़ॉर्वर्डिंग सी ++ 03
- 3. सी ++ 11 और सी ++ 03
- 4. क्या 'टाइपिफ एनम {} टी` सी ++ 0x में स्कॉप्ड एनम तत्व पहचानकर्ताओं को अनुमति देगा?
- 5. मध्यम ट्रस्ट में प्रतिबिंब अनुमति की अनुमति है?
- 6. कौन से मानकों सी और सी ++ में अज्ञात structs और संघों की अनुमति देता है?
- 7. सी में बुलियन रिटर्न प्रकार की अनुमति है?
- 8. केवल सी ++ में परिभाषित व्यवहार की अनुमति देता है?
- 9. सी # में स्थिर संरचनाओं की अनुमति क्यों नहीं है?
- 10. संस्करण पहचानकर्ताओं की तुलना करें
- 11. जावा कीवर्ड को ईएल पहचानकर्ताओं के रूप में अनुमति नहीं है
- 12. MySQL में निहित लेनदेन की अनुमति है?
- 13. google.maps.Size में किन इकाइयों की अनुमति है?
- 14. schema_version में चयन की अनुमति नहीं है?
- 15. सी ++ 03 और सी ++ 11 के बीच अपरिभाषित व्यवहार में क्या अंतर है?
- 16. है `* - में p` वास्तव में कानूनी (अच्छी तरह का गठन) सी ++ 03
- 17. नेस्टेड फ़ंक्शंस की अनुमति नहीं है लेकिन क्यों नेस्टेड फ़ंक्शन प्रोटोटाइप की अनुमति है? [सी ++]
- 18. लॉक कि सी # में कई पाठकों की अनुमति देगा
- 19. जावा क्लास में कोड की अधिकतम लाइनों की अनुमति है?
- 20. जावास्क्रिप्ट में किस तारीख की तारीखों की अनुमति है?
- 21. डब्ल्यूसीएफ में विधि अधिभार की अनुमति क्यों नहीं है?
- 22. UITableViewCell पहचानकर्ताओं में स्थिर कीवर्ड क्यों उपयोग किया जाता है?
- 23. किसी प्रोग्राम में पहचानकर्ताओं के साथ क्या होता है?
- 24. सी ++ 03 फेंक() विनिर्देशक सी ++ 11 के बीच अंतर
- 25. क्या आप जावा/सी # में अंतरराष्ट्रीय पहचानकर्ताओं का उपयोग करना चाहिए?
- 26. सी # टेक्स्टवाइटर, फ़ाइलों को पढ़ने की अनुमति:
- 27. क्या विचार और कोडेपैड वास्तव में सी ++ 03 का समर्थन नहीं करता है?
- 28. "फ़ाइल हटाने में त्रुटि: अनुमति अस्वीकृत" सी ++
- 29. विंडोज़ में लिनक्स बनाम फ़ाइल की अनुमति
- 30. सी ++ 11 में <cstdlib> कभी-कभी सी ++ 03 नहीं होगा?
@Zifre: मेरा मानना है कि वह सी ++ मानक के बारे में पूछ रहा है क्योंकि सभी कंपाइलर्स 100% मानक अनुपालन नहीं हैं और कुछ के पास अपने स्वयं के एक्सटेंशन हैं जो इसे कानूनी बना सकते हैं। –
सी 99 मानक स्पष्ट रूप से अतिरिक्त कानूनी पहचानकर्ता पात्रों को परिभाषित करने के लिए एक मंच की अनुमति देता है। पीडीपी 11 और वीएक्स दोनों के लिए डिकस सी कंपाइलर ने $ की अनुमति दी, क्योंकि अधिकांश सिस्टम कॉलों में उनके नाम पर एक $ शामिल था। "$ डिजिटल के लिए आरक्षित है"। मेरे पास पुराना सी मानकों या सी ++ मानक नहीं है यह जांचने के लिए कि क्या यह अनुपालन करेगा ... – RBerteig
@Zifre: क्या आपकी टिप्पणी अब और आवश्यक थी?और चूंकि आप पूछने की आवश्यकता, नहीं, वह simpl नहीं कर सका संकलक यह अनुमति दी है, भाषा नहीं किया है कि क्या है कि क्या, अपने पसंदीदा संकलक में यह कोशिश है क्योंकि वह उसे बताना होगा। सी ++ में, यह एक महत्वपूर्ण भेद है। – jalf