Я недавно решил переключиться на clang с gcc, и я получаю следующее предупреждение за использование констант широких символов: "посторонние символы в константе широких символов игнорируются" .Вот код, который получает предупреждение:
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 являются символами с высоким юникодом и, следовательно, воспринимаются синтаксическим анализатором clang как многобайтовые символы (очевидно, исходный код UTF)-8 закодировано).
Мой вопрос заключается в том, что означает предупреждение.То есть то, что именно игнорируется.Кроме того, с учетом этого предупреждения будет ли моя программа работать так, как задумано?
gcc не выдает никаких предупреждений для этого кода, и все работает как чудо.