識別子の UTF-8 文字: G の制限付きサポート
拡張識別子をサポートしているにもかかわらず、G 4.7 は UTF-8 文字をサポートしていません識別子で。この問題は、C 標準 (付録 E.1) に従って許可されているスマイリーフェイスの絵文字 (U 1F603) などの Unicode 文字を使用しようとすると発生します。
G での Unicode 文字制限
当初、作者は Unicode 文字を表すためにユニバーサル文字名 (Uxxxx) を使用しようとしました。しかし、G は、「U0001F603」が識別子として有効ではないことを理由に、このアプローチを拒否しました。
-fextended-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 中国語 Web サイトの他の関連記事を参照してください。