Kompilatorfel C3850

"char": ett universal-character-name anger ett ogiltigt tecken

Anmärkningar

Tecken som representeras som universella teckennamn måste representera giltiga Unicode-kodpunkter i intervallet 0–10FFFF. Ett universellt teckennamn får inte innehålla ett värde i Unicode-surrogatintervallet, D800-DFFF eller ett kodat surrogatpar. Kompilatorn genererar surrogatparet från en giltig kodpunkt automatiskt.

I kod som kompilerats som C får ett universellt teckennamn inte representera ett tecken i intervallet 0000-009F, inklusive, med undantagen 0024 ($), 0040 (@) och 0060 (''').

I kod som kompilerats som C++, kan ett universellt teckennamn använda valfri giltig Unicode-kodpunkt i en sträng- eller teckenliteral. Utanför en literal får ett universellt teckennamn inte representera ett kontrolltecken i intervallen 0000-001F eller 007F-009F, inklusive båda intervallen, eller vara en medlem i den grundläggande teckenuppsättningen för källkoden. Mer information finns i Teckenuppsättningar.

Example

Följande exempel genererar C3850 och visar hur du åtgärdar det:

// 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
}