c++ - LLVM 下的非 ASCII wchar_t 文字

标签 c++ ios xcode4 llvm wchar-t

我已将一个 Xcode iOS 项目从 Xcode 3.2.6 迁移到 4.2。现在,当我尝试使用非 ASCII 字符的文字初始化 wchar_t 时,我收到了警告:

wchar_t c1;
if(c1 <= L'я') //That's Cyrillic "ya"

消息是:

MyFile.cpp:148:28: warning: character unicode escape sequence too long for its type [2] MyFile.cpp:148:28: warning: extraneous characters in wide character constant ignored [2]

并且字面量没有按预期工作 - 比较失败。

我正在使用 -fshort-wchar 进行编译,源文件是 UTF-8 格式的。 Xcode 编辑器可以很好地显示文件。它在 GCC(多种版本,包括 Xcode 3)上编译和工作,在 MSVC 上工作。有没有办法让 LLVM 编译器识别这些文字?如果没有,我可以回到 Xcode 4 中的 GCC 吗?

编辑:Snow Leopard 上的 Xcode 4.2 - 说来话长。

EDIT2:确认了一个全新的项目。文件扩展名无关紧要 - .m 文件中的行为相同。 -fshort-wchar 也不影响它。看来我必须回到 GCC,直到我可以升级到修复此问题的 Xcode 版本。

最佳答案

不是答案,但希望是有用的信息——我无法用 clang 4.0 (Xcode 4.5.1) 重现问题:

$ uname -a
Darwin air 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64
$ env | grep LANG
LANG=en_US.UTF-8
$ clang -v
Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
$ cat test.c
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    wchar_t c1 = 0;
    printf("sizeof(c1) == %lu\n", sizeof(c1));
    printf("sizeof(L'Я') == %lu\n", sizeof(L'Я'));
    if (c1 < L'Я') {
        printf("Я люблю часы Заря!\n");
    } else {
        printf("Что за....?\n");
    }
    return EXIT_SUCCESS;
}

$ clang -Wall -pedantic ./test.c 
$ ./a.out 
sizeof(c1) == 4
sizeof(L'Я') == 4
Я люблю часы Заря!
$ clang -Wall -pedantic ./test.c -fshort-wchar
$ ./a.out 
sizeof(c1) == 2
sizeof(L'Я') == 2
Я люблю часы Заря!
$ 

使用 clang++ 观察到相同的行为(其中 wchar_t 是内置类型)。

关于c++ - LLVM 下的非 ASCII wchar_t 文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13080325/

相关文章:

c++ - std::count 的复杂性

c++ - GotoBookmark 太慢?

ios - 设置collectionView的起始位置

iphone - 路由音频输入以从 iPhone 上的 TOP 麦克风接收

c++ - 将数据提供给 ChartView (LineSeries) - QML

c++ - 使用 std::copy 从 ifstream 读取十六进制值序列

iphone - 在iphone中通过sqlite从数据库中检索数据

ios - swifyJson突然无法解析alamofire数据

Xcode 4.2 Organizer - 文档异常缓慢

Xcode 代码完成 "flicker"