मैं समझता हूं कि यह क्या करता है: const char *
(सादे पुराने अक्षर) के बजाय const wchar_t *
(व्यापक वर्ण स्ट्रिंग) के रूप में एक स्ट्रिंग को निर्दिष्ट करता है, लेकिन यह वास्तव में कैसे परिभाषित किया गया है?
क्या यह किसी प्रकार का मैक्रो है? क्या यह जीसीसी कंपाइलर्स के लिए एक ऑपरेटर है? यह क्या है ?
मूल उपसर्गों मूल भाषा का हिस्सा हैं, बहुत प्रत्ययों की तरह:
'a' // type: char L'a' // type: wchar_t "a" // type: char[2] L"a" // type: wchar_t[2] U"a" // type: char32_t[2] 1 // type: int 1U // type: unsigned int 0.5 // type: double 0.5f // type: float 0.5L // type: long double
ध्यान दें कि wchar_t
का यूनिकोड के साथ कुछ नहीं करना है यहाँ विषय पर मेरा एक विस्तारित शेख़ी है
इसे एक एन्कोडिंग उपसर्ग कहा जाता है:
string-literal
:
|encoding-prefix
opt
"s-char-sequenceopt
"
|encoding-prefix
opt
आर आरraw-string
encoding-prefix
:
|u8
|u
|U
|L
और एक चौड़ी स्ट्रिंग का प्रतीक है:
11)
L
स्ट्रिंग शाब्दिक जोL
शुरू होता है, जैसेL"asdf"
, एक चौड़ी स्ट्रिंग शाब्दिक है एक विस्तृत स्ट्रिंग शब्दशः प्रकार "const wchar_t
" की सरणी है, जहां n नीचे वर्णित स्ट्रिंग का आकार है; इसकी स्थैतिक भंडारण अवधि है और दी गई वर्णों के साथ आरंभ किया गया है।
एल का अर्थ व्यापक चरित्र है: wchar_t
। एल के साथ स्ट्रिंग 8bit के बजाय 16bit में कोडित है, उदाहरण लें:
"A" = 41 L"A" = 00 41