मैं चरित्र/स्ट्रिंग कोड पदों और एन्कोडिंग नियमों के संबंध में सी मानक (C99 और सी 11) अस्पष्ट पाया:सी मानक: चरित्र की स्थापना की और स्ट्रिंग एन्कोडिंग विनिर्देश
सबसे पहले मानक the source character set
और the execution character set
परिभाषित करता है। अनिवार्य रूप से यह ग्लिफ का एक सेट प्रदान करता है, लेकिन उनके साथ किसी भी संख्यात्मक मानों को संबद्ध नहीं करता है - तो डिफ़ॉल्ट वर्ण सेट क्या है?
मैं यहां एन्कोडिंग के बारे में नहीं पूछ रहा हूं लेकिन केवल ग्लिफ/रेपरोटेयर संख्यात्मक/कोड पॉइंट मैपिंग के लिए। यह universal character names
को आईएसओ/आईईसी 10646 के रूप में परिभाषित करता है, लेकिन क्या यह कहता है कि यह डिफ़ॉल्ट वर्णमाला है?
उपरोक्त के विस्तार के रूप में - मुझे कुछ भी नहीं मिला जो कहता है कि संख्यात्मक भागने अनुक्रम \ 0 और \ x प्रतिनिधित्व करते हैं।
सी मानकों से (C99 और C11, मैं एएनएसआई सी जांच नहीं की) मैं निम्नलिखित चरित्र और स्ट्रिंग शाब्दिक के बारे में मिल गया:
+---------+-----+------------+----------------------------------------------+
| Literal | Std | Type | Meaning |
+---------+-----+------------+----------------------------------------------+
| '...' | C99 | int | An integer character constant is a sequence |
| | | | of one or more multibyte characters |
| L'...' | C99 | wchar_t | A wide character constant is a sequence of |
| | | | one or more multibyte characters |
| u'...' | C11 | char16_t | A wide character constant is a sequence of |
| | | | one or more multibyte characters |
| U'...' | C11 | char32_t | A wide character constant is a sequence of |
| | | | one or more multibyte characters |
| "..." | C99 | char[] | A character string literal is a sequence of |
| | | | zero or more multibyte characters |
| L"..." | C99 | wchar_t[] | A wide string literal is a sequence of zero |
| | | | or more multibyte characters |
| u8"..." | C11 | char[] | A UTF-8 string literal is a sequence of zero |
| | | | or more multibyte characters |
| u"..." | C11 | char16_t[] | A wide string literal is a sequence of zero |
| | | | or more multibyte characters |
| U"..." | C11 | char32_t[] | A wide string literal is a sequence of zero |
| | | | or more multibyte characters |
+---------+-----+------------+----------------------------------------------+
हालांकि मैं एन्कोडिंग के बारे में कुछ भी नहीं मिला इन शाब्दिकों के लिए नियम। यूटीएफ -8 यूटीएफ -8 एन्कोडिंग संकेत देने लगता है, लेकिन मुझे नहीं लगता कि यह स्पष्ट रूप से का स्पष्ट रूप से उल्लेख किया गया है। इसके अलावा, अन्य प्रकार के लिए एन्कोडिंग अनिर्धारित या कार्यान्वयन निर्भर है?
मैं यूनिक्स विनिर्देश से परिचित नहीं हूं। क्या यूनिक्स विनिर्देश इन नियमों के लिए कोई अतिरिक्त बाधा निर्दिष्ट करता है?
इसके अलावा किसी को भी मुझे बता सकते हैं कि क्या चारसेट/एन्कोडिंग स्कीम जीसीसी और MSVC कि भी मदद मिलेगी द्वारा प्रयोग किया जाता है।
क्या यह यूआई 8 "..." के लिए भी कार्यान्वयन परिभाषित किया गया है? ऐसा लगता है कि उस विशेष शाब्दिक के लिए यूटीएफ -8 एन्कोडिंग की तरफ इशारा करते हुए। – tinkerbeast
@tinkerbeast no - C को किसी विशेष वर्ण सेट की आवश्यकता नहीं है। u8 "..."इंगित करता है कि स्ट्रिंग को आठ-बिट स्टोरेज में फिट वर्णों से बनाया जाना चाहिए। –
@ एच 2CO3 सी 11 कहता है कि यू 8 अक्षर यूटीएफ -8 हैं। मुझे यकीन नहीं है कि कंपाइलर्स को लागू करने के लिए चारों ओर मिल गया है, हालांकि – nos