최근에 gcc에서 clang으로 전환하기로 결정했으며 넓은 문자 상수를 사용할 때 다음과 같은 경고가 표시됩니다. " 넓은 문자 상수가 무시되었습니다. ". 여기에 경고를 얻는 코드입니다 : 여기와이드 문자 상수를 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;
}
을의 경우 조건의 문자 모두 높은 유니 코드 문자 때문에 그 소리 파서에 의해 멀티 바이트 문자로 볼 수는 분명히 (소스 코드 UTF-8 인코딩 됨).
제 질문은 경고 메시지의 의미입니다. 즉, 정확히 무시되고있는 것입니다. 또한,이 경고가 주어지면 제 프로그램은 설계대로 작동합니까?
gcc는이 코드에 대해 경고하지 않으며 모든 것이 매력처럼 작동합니다.
흠 gcc는 아무런 문제가 없었습니다. clang에게 UTF-8 소스 파일을 제대로 처리하도록하거나 또는 와이드 문자를 입력하여 clang이 이해할 수 있도록 할 수 있습니까? –
http://github.com/bratsche/clang은 다음을 제안하지 않습니다. IV. 누락 된 기능/개선 Lexer : * 소스 문자 매핑. GCC는 ASCII와 UTF-8을 지원합니다. – MSalters