在OS X 10.9上找不到uchar.h文件

11 c clang c11

我的印象是我的C编译器支持C11,因为它接受-std = c11标志,

$ cc --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.3.0
Thread model: posix
Run Code Online (Sandbox Code Playgroud)

并且uchar.h是C11标准的一部分,所以我希望这个程序能够编译,

$ cat /tmp/esc.c 
#include <uchar.h>

int main(void) {}
Run Code Online (Sandbox Code Playgroud)

$ cc /tmp/esc.c 
/tmp/esc.c:1:10: fatal error: 'uchar.h' file not found
#include <uchar.h>
         ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

我尝试找到uchar.h文件,但我系统上的唯一点击是来自iPhone SDK的奇怪,

$ locate uchar.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/usr/include/unicode/uchar.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/usr/include/unicode/uchar.h
Run Code Online (Sandbox Code Playgroud)

我如何uchar.h在OS X 10.9上使用?我是否必须下载新的编译器,或者我是否滥用了我的编译器?

hut*_*ano -1

尝试这个:

cc -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/usr/include -L/usr/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/usr/lib -licucore /tmp/esc.c
Run Code Online (Sandbox Code Playgroud)

如果不起作用,我建议您安装“International Components for Unicode”:

1) Install Macports for OS X
2) Run this in Terminall app: "port install icu"
Run Code Online (Sandbox Code Playgroud)

它为您提供了 Unicode 所需的所有组件,包括“/opt/local/include/unicode/uchar.h”

然后找到适合 cc 的选项:

/opt/local/bin/icu-config --cppflags-searchpath --ldflags --ldflags-icuio
Run Code Online (Sandbox Code Playgroud)

这给你:

-I/opt/local/include -L/opt/local/lib -licui18n -licuuc -licudata -licuio  
Run Code Online (Sandbox Code Playgroud)

所以你将你的程序编译为:

cc -I/opt/local/include -L/opt/local/lib -licui18n -licuuc -licudata -licuio /tmp/esc.c
Run Code Online (Sandbox Code Playgroud)

我不确定,但从其网站获取 icu 可能也适合您:

http://site.icu-project.org/download

  • 这是 `&lt;unicode/uchar.h&gt;`,而不是 `&lt;uchar.h&gt;` Apple 没有 uchar.h,因为它以不同的方式处理 i18n。 (3认同)