2012-06-17 8 views
8

सी ++ 98 स्पष्ट रूप से संकलन चरणों के मानकों में से एक के रूप में है। इसका क्या अर्थ है और इसे शुरू में क्यों निष्पादित किया जाता है?सी ++ में "सार्वभौमिक चरित्र नाम रूपांतरण" का क्या अर्थ है?

+0

शायद उत्तर को सही के रूप में चिह्नित करें? – Short

उत्तर

8

एक सार्वभौमिक चरित्र नाम \uFFFD या \U0010FFFD जैसा दिखता है। यह आपके स्रोत कोड में एक चरित्र लिखने का एक तरीका है जहां स्रोत कोड एन्कोडिंग में उस वर्ण को शामिल नहीं किया गया है।

सी ++ निर्दिष्ट करता है कि मूल स्रोत चरित्र सेट में वर्णों को अनुवाद के पहले चरण में सार्वभौमिक चरित्र नामों में परिवर्तित नहीं किया जा सकता है। इसका कारण यह है कि सार्वभौमिक चरित्र नाम और वर्ण जो मूल स्रोत चरित्र सेट में नहीं हैं लेकिन जो स्रोत चरित्र सेट में हैं, समान रूप से व्यवहार किए जाते हैं।

के रूप में करता है, तो शासन का मतलब है कि एक कार्यान्वयन वास्तव में, इस वैश्विक चरित्र नाम अनुवाद करने के लिए आवश्यक नहीं है जब तक कि यह विस्तारित हूबहू कि स्रोत में सचमुच दिखाई विस्तारित पात्रों के साथ सार्वभौमिक चरित्र के नाम के रूप में लिखा वर्ण व्यवहार करता है।

+0

क्या वे सभी यूनिकोड एन्कोडेड वर्ण हैं? तो चीनी वर्ण उदाहरण के लिए यूनिकोडफर्स्ट में परिवर्तित हो गए हैं? – unj2

+0

हां, यूनिवर्सल कैरेक्टर नाम यूनिकोड छोटे नामों का उपयोग करते हैं (संख्या प्रत्येक यूनिकोड के साथ यूनिकोड सहयोगी)। उदाहरण के लिए, यूनिकोड चरित्र '⻰' को संक्षिप्त नाम U + 2EF0 निर्दिष्ट करता है और इसलिए इस वर्ण के लिए सार्वभौमिक वर्ण नाम '\ u2EF0' या' \ U00002EF0' – bames53

+0

होगा इसलिए मैंने एक C++ स्रोत फ़ाइल को कुछ भी नहीं बदलने के लिए एक प्रोग्राम लिखा लेकिन सार्वभौमिक चरित्र नाम। जी ++ ने पहली बार पहचानकर्ताओं में सार्वभौमिक वर्णों का उपयोग करने के बारे में त्रुटियों का एक गुच्छा दिया, और फिर 'त्रुटि:' # शामिल करें #\ 012int मुख्य() {\ 012 \ 011printf ("हैलो, दुनिया! \ N"); \ 012 \ 011return 0; \ 012} \ 012 'किसी प्रकार का नाम नहीं है'। इसलिए मैं या तो * सार्वभौमिक चरित्र नामों और वास्तविक वर्णों के बीच एक अंतर है, या जीएनयू सी ++ में एक बग है। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^