我最近决定从 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 没有对此代码发出任何警告,并且一切都像魅力一样工作。