Heim  >  Artikel  >  Backend-Entwicklung  >  Warum hat G 4.7 trotz erweiterter Identifier-Unterstützung Probleme mit UTF-8-Zeichen in Bezeichnern?

Warum hat G 4.7 trotz erweiterter Identifier-Unterstützung Probleme mit UTF-8-Zeichen in Bezeichnern?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-10 08:00:03452Durchsuche

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

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn