識別子の Unicode 文字: G の制限
-fextended-identifiers オプションを有効にしても、G 4.7 では特定の Unicode 文字の使用が禁止されています。 、笑顔の記号 (☺) を識別子として含めます。この制限は、識別子で UTF-8 文字がサポートされていないことが原因です。
識別子をユニバーサル文字名 (U0001F603) に変換する場合でも、コンパイラは依然として失敗します。これは、C99 および C98 標準に基づいて、ucnid.tab で定義されているように、G が識別子の制限された文字セットのみをサポートしているためです。
さらに、-fextended-identifiers オプションはまだ実験段階であり、サポートされない可能性があります。意図したとおりに機能します。この制限に対処するために、G はバージョン 4.9.0 で C11 文字セットのサポートを導入しました。これにより、U0001F603 などの BMP 範囲内の文字の使用が許可されます。
ただし、-finput-charset=UTF-8 を使用しているにもかかわらず、☺ などの一部の Unicode 文字では問題が解決されません。この問題を追跡するためにバグ レポートが提出されました。
対照的に、Clang 3.3 は、特別なオプションを使用せずに、元の識別子 (☺) とユニバーサル キャラクター名 (U0001F603) の両方を正常に処理します。
以上が-fextended-identifier を使用しても G が識別子の一部の Unicode 文字を制限するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。