標識符中的Unicode 字元:G 中的限制
儘管啟用了-fextended-identifiers 選項,G 4.7 仍禁止使用某某有些Unicode 字符,包括笑臉符號(☺) 作為標識符。此限制源自於標識符中缺乏對 UTF-8 字元的支援。
即使將識別碼轉換為其通用字元名稱 (U0001F603),編譯器仍然會失敗。這是因為 G 僅支援基於 C99 和 C 98 標準的 ucnid.tab 中定義的一組有限的識別符字元。
此外,-fextended-identifiers 選項仍處於實驗階段,可能不會如預期發揮作用。為了解決這個限制,G 在 4.9.0 版本中引入了對 C11 字元集的支援。這允許使用 BMP 範圍內的字符,包括 U0001F603。
但是,儘管使用 -finput-charset=UTF-8,但某些 Unicode 字元(例如 ☺)仍然存在問題。已提交錯誤報告來追蹤此問題。
相較之下,Clang 3.3 成功處理原始識別碼 (☺) 和通用角色名稱 (U0001F603),無需任何特殊選項。
以上是為什麼即使使用 -fextended-identifiers,G 仍然限制標識符中的某些 Unicode 字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!