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!