首頁 >後端開發 >C++ >為什麼即使使用 -fextended-identifiers,G 仍然限制標識符中的某些 Unicode 字元?

為什麼即使使用 -fextended-identifiers,G 仍然限制標識符中的某些 Unicode 字元?

Linda Hamilton
Linda Hamilton原創
2024-11-10 09:53:02441瀏覽

Why Does G   Still Restrict Some Unicode Characters in Identifiers Even With -fextended-identifiers?

標識符中的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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn