ホームページ  >  記事  >  バックエンド開発  >  拡張識別子のサポートにもかかわらず、G 4.7 が識別子の UTF-8 文字に苦労するのはなぜですか?

拡張識別子のサポートにもかかわらず、G 4.7 が識別子の UTF-8 文字に苦労するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-10 08:00:03448ブラウズ

Why Does G   4.7 Struggle with UTF-8 Characters in Identifiers Despite Extended Identifier Support?

識別子の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。