最近、gcc から clang に切り替えることにしましたが、ワイド文字定数の使用に対して次の警告が表示されます: 「ワイド文字定数の余分な文字は無視されました」。警告を受け取るコードは次のとおりです。
wstring& line;
…
for (wstring::iterator ch = line.begin(); ch != line.end(); ++ch)
switch (*ch) {
case L'│': *ch = L'|'; break;
case L'﹤': *ch = L'<'; break;
case L'﹥': *ch = L'>'; break;
case L'﹙': *ch = L'('; break;
case L'﹚': *ch = L')'; break;
default: break;
}
ここで、case 条件の文字はすべて高度な Unicode 文字であるため、clang パーサーでは明らかにマルチバイト文字として認識されます (ソース コードは UTF-8 でエンコードされています)。
私の質問は、警告メッセージの背後にある意味は何ですか。つまり、正確には無視されているものです。また、この警告が与えられた場合、私のプログラムは設計どおりに動作しますか?
gcc はこのコードに対して警告を表示せず、すべてが魅力的に機能します。