Xcode iOS プロジェクトを Xcode 3.2.6 から 4.2 に移行しました。wchar_t を非 ASCII 文字のリテラルで初期化しようとすると、警告が表示されます。
wchar_t c1;
if(c1 <= L'я') //That's Cyrillic "ya"
メッセージは次のとおりです。
MyFile.cpp:148:28: 警告: 文字の Unicode エスケープ シーケンスがその型に対して長すぎます [2] MyFile.cpp:148:28: 警告: ワイド文字定数の不要な文字は無視されます [2]
そして、リテラルは期待どおりに機能しません - 比較は失敗します。
-fshort-wchar でコンパイルしています。ソース ファイルは UTF-8 です。Xcode エディターはファイルを正常に表示します。GCC (Xcode 3 を含むいくつかのフレーバー) でコンパイルして動作し、MSVC で動作しました。LLVM コンパイラにこれらのリテラルを認識させる方法はありますか? そうでない場合、Xcode 4 で GCC に戻ることはできますか?
編集:Snow Leopard の Xcode 4.2 - 長い話が理由です。
EDIT2: 真新しいプロジェクトで確認されました。ファイル拡張子は関係ありません - .m ファイルでも同じ動作です。-fshort-wchar も影響しません。これが修正された Xcode のバージョンにアップグレードできるようになるまで、GCC に戻らなければならないようです。