Heim > Artikel > Backend-Entwicklung > Warum hat G 4.7 trotz erweiterter Identifier-Unterstützung Probleme mit UTF-8-Zeichen in Bezeichnern?
UTF-8-Zeichen in Bezeichnern: Begrenzte Unterstützung von G
Obwohl erweiterte Bezeichner unterstützt werden, fehlt G 4.7 die Unterstützung für UTF-8-Zeichen in Bezeichnern. Dieses Problem tritt auf, wenn versucht wird, Unicode-Zeichen wie das Smiley-Emoji (U 1F603) zu verwenden, was gemäß dem C-Standard (Anhang E.1) zulässig ist.
Einschränkungen für Unicode-Zeichen in G
Anfangs versuchte der Autor, universelle Zeichennamen (Uxxxx) zur Darstellung von Unicode-Zeichen zu verwenden. G lehnte diesen Ansatz jedoch mit der Begründung ab, dass „U0001F603“ in einem Bezeichner nicht gültig sei.
Eingeschränkte Funktionalität von -fextended-identifiers
Die Option -fextended-identifiers , obwohl behauptet wird, die Identifier-Unterstützung zu erweitern, reicht in G 4.7 nicht aus. Es erkennt nur einen engen Bereich von Zeichen an, die in ucnid.tab definiert sind und veralteten C 98- und C99-Standards entsprechen.
Cross-Compiler-Kompatibilität
Ab GCC 4.9 , Unterstützung für den C11-Zeichensatz wurde hinzugefügt. Dies ermöglicht die Verwendung von U0001F603 als Kennung. Allerdings bleibt selbst mit GCC 8.2 der ursprüngliche Code, der das Emoji verwendet, problematisch.
Im Gegensatz dazu weist Clang 3.3 keine Probleme mit dem Code auf, auch ohne zusätzliche Optionen wie -fextended-identifiers oder -finput-charset=UTF -8.
Das obige ist der detaillierte Inhalt vonWarum hat G 4.7 trotz erweiterter Identifier-Unterstützung Probleme mit UTF-8-Zeichen in Bezeichnern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!