编译器错误 C3850

“char”:通用字符名称指定的字符无效

备注

表示为通用字符名称的字符必须表示 0-10FFFF 范围内的有效 Unicode 码位。 通用字符名称不能包含 Unicode 代理项范围、D800-DFFF 或编码的代理项对中的值。 编译器从有效码位自动生成代理项对。

在编译为 C 语言的代码中,通用字符名称不能表示 0000-009F(含)范围内的字符,024(“$”)、0040(“@”)和 0060(“`”)除外。

在编译为 C++ 的代码中,通用字符名称可以使用字符串或字符文本中的任意有效 Unicode 码位。 在文字之外,通用字符名称不能表示 0000-001F 或 007F-009F(均含)范围内的控制字符或基本源字符集成员。 有关详细信息,请参阅 Character Sets

示例

下面的示例生成 C3850,并演示如何修复此错误:

// C3850.cpp
int main() {
   int \u0019 = 0;   // C3850, not in allowed range for an identifier
   const wchar_t * wstr_bad  = L"\UD840DC8A"; // C3850, UCN is surrogate pair
   const wchar_t * wstr_good = L"\U0002008A"; // Okay, UCN is valid code point
}