識別符中的UTF-8 字元:G 的有限支援
儘管支援擴充標識符,G 4.7 仍缺乏對UTF- 8 字元的支援在標識符中。當嘗試使用 Unicode 字元時會出現此問題,例如笑臉表情符號 (U 1F603),根據 C 標準(附錄 E.1)這是允許的。
G 中的 Unicode 字元限制
最初,作者嘗試使用通用字元名稱(Uxxxx)來表示 Unicode 字元。然而,G 拒絕了這種方法,理由是「U0001F603」在識別碼中無效。
-fextend-identifiers 的有限功能
-fextended-identifiers 選項雖然聲稱擴展了標識符支持,但在 G 4.7 中卻存在不足。它僅承認 ucnid.tab 中定義的一小部分字符,符合過時的 C 98 和 C99 標準。
跨編譯器相容性
自 GCC 4.9 起,增加了對C11字元集的支援。這允許使用 U0001F603 作為標識符。然而,即使使用 GCC 8.2,使用表情符號的原始程式碼仍然存在問題。
相較之下,Clang 3.3 的程式碼沒有任何問題,即使沒有其他選項,例如 -fextended-identifiers 或 -finput-charset=UTF -8.
以上是儘管有擴展標識符支持,為什麼 G 4.7 仍難以處理標識符中的 UTF-8 字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!