GCC 7.3 - 1.1. Character sets

1.1 चरित्र सेट




gcc

1.1 चरित्र सेट

C और संबंधित भाषाओं में स्रोत कोड वर्ण सेट प्रसंस्करण बल्कि जटिल है। सी मानक दो चरित्र सेटों पर चर्चा करता है, लेकिन वास्तव में कम से कम चार हैं।

CPP में फ़ाइल इनपुट किसी भी वर्ण पर सेट हो सकता है। सीपीपी की पहली पहली कार्रवाई, इससे पहले कि यह रेखा सीमाओं को भी देखता है, फ़ाइल को आंतरिक प्रसंस्करण के लिए उपयोग किए जाने वाले वर्ण में परिवर्तित करना है। वह सेट वह है जिसे C मानक स्रोत वर्ण सेट कहता है। यह आईएसओ 10646 के साथ आइसोमोर्फिक होना चाहिए, जिसे यूनिकोड भी कहा जाता है। CPP यूनिकोड के UTF-8 एन्कोडिंग का उपयोग करता है।

इनपुट फ़ाइलों के वर्ण सेट -finput-charset = विकल्प का उपयोग करके निर्दिष्ट किए जाते हैं।

सभी प्रीप्रोसेसिंग कार्य (इस मैनुअल के बाकी का विषय) स्रोत चरित्र सेट में किया जाता है। यदि आप -E विकल्प के साथ प्रीप्रोसेसर से पाठ आउटपुट का अनुरोध करते हैं, तो यह UTF-8 में होगा।

प्रीप्रोसेसिंग पूरा होने के बाद, स्ट्रिंग और कैरेक्टर कॉन्स्टैंट को फिर से रूपांतरित किया जाता है, निष्पादन चरित्र सेट में। यह चरित्र सेट उपयोगकर्ता के नियंत्रण में है; डिफॉल्ट कैरेक्टर सेट से मेल खाता यूटीएफ -8 डिफ़ॉल्ट है। वाइड स्ट्रिंग और चरित्र स्थिरांक का अपना चरित्र सेट होता है, जिसे विशेष रूप से मानक में नहीं कहा जाता है। फिर से, यह उपयोगकर्ता के नियंत्रण में है। डिफ़ॉल्ट रूप से UTF-16 या UTF-32 है, जो भी लक्ष्य मशीन के बाइट क्रम में लक्ष्य के wchar_t प्रकार में फिट बैठता है। 1 ऑक्टल और हेक्साडेसिमल एस्केप अनुक्रम रूपांतरण से नहीं गुजरते हैं; वर्तमान में चयनित निष्पादन वर्ण सेट की परवाह किए बिना '\ x12' का मान 0x12 है। अन्य सभी एस्केप को कैरेक्टर द्वारा सेट किए गए सोर्स कैरेक्टर सेट में बदल दिया जाता है, जो वे रिप्रेजेंट कैरेक्टर सेट में बदल देते हैं, जैसे कि अनसैप्ड कैरेक्टर।

पहचानकर्ताओं में, ASCII सीमा के बाहर के अक्षर केवल ' \ u ' और ' \ U ' के साथ निर्दिष्ट किए जा सकते हैं, सीधे उपयोग नहीं किए जाते हैं। यदि सख्त आईएसओ C90 अनुरूपता जैसे विकल्प के साथ निर्दिष्ट की जाती है जैसे -std = c90 , या -fno- विस्तारित-पहचानकर्ता का उपयोग किया जाता है, तो पहचानकर्ताओं में उन भागने की अनुमति नहीं है।

फुटनोट

UTF-16 विस्तृत वर्ण सेट के लिए C मानक की आवश्यकताओं को पूरा नहीं करता है, लेकिन 16-बिट wchar_t का विकल्प कुछ सिस्टम ABI में निहित है, इसलिए हम इसे ठीक नहीं कर सकते।

अगला: प्रारंभिक प्रसंस्करण , ऊपर: Overview [ Contents ] [ Index ]