Sdílet prostřednictvím


Chyba kompilátoru C3850

'char': Název univerzálního znaku určuje neplatný znak.

Poznámky

Znaky reprezentované jako univerzální názvy znaků musí představovat platné body kódu Unicode v rozsahu 0–10FFFF. Název univerzálního znaku nemůže obsahovat hodnotu v rozsahu náhradních znaků Unicode, D800-DFFF ani v zakódované dvojici náhradních znaků. Kompilátor vygeneruje náhradní dvojici z platného bodu kódu automaticky.

V kódu zkompilovaném jako C nesmí název univerzálního znaku představovat znak v rozsahu 0000–009F včetně s výjimkami 0024 ('$'), 0040 ('@') a 0060 ('''' ).

V kódu zkompilovaném jako C++ může název univerzálního znaku použít libovolný platný bod kódu Unicode v řetězci nebo literálu znaků. Mimo literál nemusí název univerzálního znaku představovat řídicí znak v rozsahech 0000-001F nebo 007F-009F, včetně nebo člen základní zdrojové znakové sady. Další informace naleznete v tématu Znakové sady.

Příklad

Následující příklad vygeneruje C3850 a ukazuje, jak ho opravit:

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