Maison > développement back-end > C++ > le corps du texte

Pourquoi G 4.7 a-t-il du mal avec les caractères UTF-8 dans les identifiants malgré la prise en charge étendue des identifiants ?

Mary-Kate Olsen
Libérer: 2024-11-10 08:00:03
original
469 Les gens l'ont consulté

Why Does G   4.7 Struggle with UTF-8 Characters in Identifiers Despite Extended Identifier Support?

Caractères UTF-8 dans les identifiants : prise en charge limitée de G

Malgré la prise en charge des identifiants étendus, G 4.7 ne prend pas en charge les caractères UTF-8 en identifiants. Ce problème survient lorsque vous tentez d'utiliser des caractères Unicode, tels que l'emoji smiley (U 1F603), qui est autorisé selon la norme C (Annexe E.1).

Restrictions relatives aux caractères Unicode dans G

Au départ, l'auteur a essayé d'utiliser des noms de caractères universels (Uxxxx) pour représenter les caractères Unicode. Cependant, G a rejeté cette approche, citant que "U0001F603" n'était pas valide dans un identifiant.

Fonctionnalité limitée de -fextended-identifiers

L'option -fextended-identifiers , tout en prétendant étendre la prise en charge des identifiants, n'est pas à la hauteur de G 4.7. Il ne reconnaît qu'une gamme étroite de caractères définis dans ucnid.tab, qui adhère aux normes obsolètes C 98 et C99.

Compatibilité entre compilateurs

À partir de GCC 4.9 , la prise en charge du jeu de caractères C11 a été ajoutée. Cela permet d'utiliser U0001F603 comme identifiant. Cependant, même avec GCC 8.2, le code original utilisant l'emoji reste problématique.

En revanche, Clang 3.3 ne présente aucun problème avec le code, même sans options supplémentaires telles que -fextended-identifiers ou -finput-charset=UTF -8.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal