Unicode-Zeichen in Bezeichnern: Einschränkungen in G
Obwohl die Option -fextended-identifiers aktiviert ist, verbietet G 4.7 die Verwendung bestimmter Unicode-Zeichen , einschließlich des lächelnden Gesichtssymbols (☺), als Kennungen. Diese Einschränkung ergibt sich aus der fehlenden Unterstützung für UTF-8-Zeichen in Bezeichnern.
Selbst beim Konvertieren des Bezeichners in seinen universellen Zeichennamen (U0001F603) schlägt der Compiler immer noch fehl. Dies liegt daran, dass G nur einen eingeschränkten Zeichensatz für Bezeichner unterstützt, wie in ucnid.tab definiert, basierend auf den Standards C99 und C 98.
Darüber hinaus ist die Option -fextended-identifiers noch experimentell und möglicherweise nicht verfügbar Funktion wie vorgesehen. Um diese Einschränkung zu beheben, hat G in Version 4.9.0 die Unterstützung für den C11-Zeichensatz eingeführt. Dies ermöglicht die Verwendung von Zeichen innerhalb des BMP-Bereichs, einschließlich U0001F603.
Trotz der Verwendung von -finput-charset=UTF-8 besteht das Problem jedoch weiterhin bei einigen Unicode-Zeichen, z. B. ☺. Es wurde ein Fehlerbericht eingereicht, um dieses Problem zu verfolgen.
Im Gegensatz dazu verarbeitet Clang 3.3 erfolgreich sowohl die ursprüngliche Kennung (☺) als auch den universellen Zeichennamen (U0001F603) ohne spezielle Optionen.
Das obige ist der detaillierte Inhalt vonWarum schränkt G trotz -fextended-identifiers immer noch einige Unicode-Zeichen in Bezeichnern ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!