その名前にもかかわらず、g 4.7 の -fextended-identifiers オプションは、すべての範囲の識別子を許可するには至っていません。識別子としての Unicode 文字。このオプションは拡張識別子を有効にしますが、拡張識別子を指定範囲内の文字に制限するため、より意味のある変数名の作成が妨げられます。
付録 E.1 では 10000 ~ 1FFFD の範囲の文字が許可されているにもかかわらず、標準ではE.2 の頭文字としてこれらを禁止しないでください。ただし、g 4.7 ではこの規定が無視されているようで、ユーザーは広く認識されている ?.
などの文字を使用できなくなります。さらに混乱を招くために、他のコンパイラはさまざまなレベルのサポートを提供しています。たとえば、Clang 3.3 では両方の ? -std=c のみを持つ識別子としての U0001F603 11.
GCC は、g 4.7 以降、識別子内の Unicode 文字の幅広いサポートを提供するように更新されました:
ただし、GCC の新しいバージョンでの拡張サポートがあっても、依然として制限が存在することに注意することが重要です。 -fextended-identifiers オプションは実験的なものであり、期待どおりに機能しない可能性があります。
Unicode 文字は識別子の可読性と表現力を向上させることができますが、g でのサポートは限定されたままです。ユーザーが Unicode 文字を識別子として使用しようとすると、不一致や制限が発生する可能性があります。コンパイラ間の互換性を最適化するには、より広範なサポートが確立されるまで、Unicode 文字を避ける標準の命名規則に従うことをお勧めします。
以上が識別子の Unicode: g が全範囲のサポートに不十分なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。