儘管有它的名字,g 4.7 中的 -fextended-identifiers 選項還是無法允許完整範圍的Unicode 字元作為識別碼。雖然此選項啟用擴展標識符,但它將它們限制為指定範圍內的字符,從而阻礙了創建更有意義的變數名稱。
儘管附件 E.1 中允許使用 10000-1FFFD 範圍內的字符,但該標準並沒有不禁止它們作為 E.2 中的初始字符。然而,g 4.7 似乎忽略了這一規定,導致用戶無法使用像廣泛識別的 ?.
這樣的字符,其他編譯器提供了不同級別的支持,這更增加了混亂。例如,Clang 3.3 允許 ?和 U0001F603 作為僅帶有 -std=c 11 的識別符。
GCC 已更新,自g 4.7 起為標識符中的Unicode 字元提供更廣泛的支援:
但是,需要注意的是,即使GCC 的後續版本提供了擴展支持,限制仍然存在。 -fextended-identifiers 選項仍處於實驗階段,可能無法如預期運作。
雖然 Unicode 字元可以增強標識符的可讀性和表現力,但它們在 g 中的支援仍然有限。使用者在嘗試使用 Unicode 字元作為標識符時可能會遇到不一致和限制。為了獲得最佳的交叉編譯器相容性,建議遵守標準命名約定,避免使用 Unicode 字符,直到建立更廣泛的支援。
以上是標識符中的 Unicode:為什麼 g 無法支援全範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!