編譯器錯誤 C3850
'char': universal-character-name 指定無效的字元
備註
以通用字元名稱表示的字元必須代表 0-10FFFFF 範圍中的有效 Unicode 字碼指標。 通用字元名稱不能包含 Unicode Surrogate 範圍、D800 DFFF 或已編碼 Surrogate 字組中的值。 編譯器會自動從有效的字碼指標產生 Surrogate 字組。
在編譯為 C 的程式碼中,通用字元名稱不一定代表 0000-009F (含) 範圍中的字元,0024 ('$')、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
}