我了解它的作用:将字符串文字指定为const wchar_t *
(宽字符串)而不是const char *
(普通旧字符),但它实际上是如何定义的?
它是某种宏吗?它是 GCC 编译器的运算符吗?它是什么?
我了解它的作用:将字符串文字指定为const wchar_t *
(宽字符串)而不是const char *
(普通旧字符),但它实际上是如何定义的?
它是某种宏吗?它是 GCC 编译器的运算符吗?它是什么?
字面前缀是核心语言的一部分,很像后缀:
'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
请注意,这与 Unicodewchar_t
无关。这是我关于这个话题的一个扩展的咆哮。
它被称为编码前缀:
string-literal
:
|encoding-prefix
opt
"s-char-sequenceopt
"
|encoding-prefix
opt
回复raw-string
encoding-prefix
:
|u8
|u
|U
|L
并标记一个宽字符串文字:
11) 以 开头的字符串文字
L
,例如L"asdf"
,是宽字符串文字。宽字符串字面量的类型为“array ofn
const wchar_t
”,其中 n 是字符串的大小,定义如下;它具有静态存储持续时间并使用给定字符进行初始化。
这里 L 的意思是宽字符:wchar_t
. 带 L 的字符串是 16 位而不是 8 位编码的,举个例子:
"A" = 41
L"A" = 00 41