Partilhar via


Erro do compilador C3850

'char': um nome de caractere universal especifica um caractere inválido

Observações

Os caracteres representados como nomes de caracteres universais devem representar pontos de código Unicode válidos no intervalo 0-10FFFF. Um nome de caractere universal não pode conter um valor no intervalo substituto Unicode, D800-DFFF, ou um par substituto codificado. O compilador gera o par substituto a partir de um ponto de código válido automaticamente.

No código compilado como C, um nome de caractere universal pode não representar um caractere no intervalo 0000-009F, inclusive, com as exceções de 0024 ('$'), 0040 ('@') e 0060 (''').

No código compilado como C++, um nome de caractere universal pode usar qualquer ponto de código Unicode válido numa cadeia ou literal de caracteres. Fora de um contexto literal, um nome de caractere universal pode não representar um caractere de controle nos intervalos 0000-001F ou 007F-009F, incluindo ambos, ou um membro do conjunto de caracteres fonte básico. Para obter mais informações, consulte Conjuntos de caracteres.

Example

O exemplo a seguir gera C3850 e mostra como corrigi-lo:

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