C++ में, हम पहचानकर्ताओं में विभिन्न प्रकार के यूनिकोड वर्णों का उपयोग कर सकते हैं। उदाहरण के लिए, आप किसी वैरिएबल को résumé नाम दे सकते हैं।

उन उच्चारण es को अलग-अलग तरीकों से दर्शाया जा सकता है: या तो एक पूर्वनिर्मित चरित्र के रूप में या एक सादे e के रूप में एक संयोजन उच्चारण वर्ण के साथ। कई एप्लिकेशन सामान्य करें ऐसे स्ट्रिंग्स ताकि प्रतीत होने वाले समान स्ट्रिंग्स वास्तव में मेल खाते हों।

सी ++ मानक को देखते हुए, मुझे ऐसा कुछ भी नहीं दिखता है जिसके लिए संकलक को पहचानकर्ताओं को सामान्य करने की आवश्यकता होती है, इसलिए परिवर्तनीय résumé परिवर्तनीय résumé से अलग हो सकता है। (मेरे परीक्षणों में, ऐसा नहीं लगता है कि एमएसवीसी और न ही क्लैंग पहचानकर्ताओं को सामान्य करता है।)

क्या ऐसा कुछ है जो कंपाइलर को सामान्य रूप चुनने से प्रतिबंधित करता है? यदि नहीं, तो किस अनुवाद के चरण में सामान्यीकरण होना चाहिए?

[स्पष्ट होने के लिए: मैं पहचानकर्ताओं के बारे में बात कर रहा हूं, स्ट्रिंग अक्षर नहीं।]

5
Adrian McCarthy 15 फरवरी 2019, 21:59

1 उत्तर

सबसे बढ़िया उत्तर

मेरा मानना ​​​​है कि संकलक को अनुवाद चरण 1 में यह सामान्यीकरण करने की अनुमति है:

भौतिक स्रोत फ़ाइल वर्णों को मूल स्रोत पर कार्यान्वयन-परिभाषित तरीके से मैप किया जाता है यदि आवश्यक हो तो वर्ण सेट (एंड-ऑफ़-लाइन संकेतकों के लिए नए-पंक्ति वर्ण प्रस्तुत करना)। भौतिक का सेट स्वीकृत स्रोत फ़ाइल वर्ण कार्यान्वयन-परिभाषित है। कोई भी स्रोत फ़ाइल वर्ण मूल में नहीं है स्रोत वर्ण सेट (5.3) को सार्वभौमिक-वर्ण-नाम द्वारा प्रतिस्थापित किया जाता है जो उस वर्ण को निर्दिष्ट करता है। एक कार्यान्वयन किसी भी आंतरिक एन्कोडिंग का उपयोग कर सकता है, जब तक कि एक वास्तविक विस्तारित चरित्र का सामना करना पड़ता है स्रोत फ़ाइल में, और उसी विस्तारित वर्ण को स्रोत फ़ाइल में सार्वभौमिक-चरित्र-नाम के रूप में व्यक्त किया गया है (उदाहरण के लिए, \uXXXX संकेतन का उपयोग करके), समान रूप से संभाला जाता है, सिवाय इसके कि यह प्रतिस्थापन कहां है एक कच्चे स्ट्रिंग शाब्दिक में वापस (5.4)।

चूंकि मूल स्रोत वर्ण सेट और सार्वभौमिक वर्ण नामों के लिए स्रोत फ़ाइल वर्णों की मैपिंग कार्यान्वयन-परिभाषित है, इसलिए कार्यान्वयन जो भी बाइट अनुक्रमों को या तो पहले से तैयार या विघटित लोअरकेस-ए-साथ-तीव्र-उच्चारण का प्रतिनिधित्व करता है उसे परिवर्तित करना चुन सकता है। सार्वभौमिक चरित्र नाम, लेकिन इस विकल्प का दस्तावेजीकरण करना चाहिए।

5
Brian Bi 15 फरवरी 2019, 20:00