23897


OS X 10.11で`#include <uchar.h>`と書いてコンパイルすると`fatal error: 'uchar.h' file not
found`となってしまいます  
なぜでしょうか?

[code]

    
    Apple LLVM version 7.3.0 (clang-703.0.29)
    Target: x86_64-apple-darwin15.4.0
    Thread model: posix
    InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
    
    
[/code]


CC BY-SA 3.0
2016-04-10T05:10:24.987
23889
2016-10-31T22:35:54.287
2016-04-10T16:39:05.753
7291
5246
question
macos c clang
OS Xでuchar.hが見つからない


uchar.hはC11規格に含まれているのですが、clangはC11を  
[部分的にサポートしている](http://en.wikichip.org/wiki/c/c11#Compiler_support)状態のようです。


CC BY-SA 3.0
2016-04-10T12:55:55.343
23897
2016-04-10T12:55:55.343
8621
23889
answer


Clangが対応していないのではなく、OS
XのCライブラリ(/usr/lib/libSystem.B.dylib)がuchar.hが提供するライブラリに対応しておらず、OS
X自身にヘッダファイルが用意されていないからです。これはClangだけでなくGCCでも同じです。HomeBrewでいれたGCC
6.2でも同じくエラーになります(macOS 10.12で確認)。

GCCの資料になりますが、uchar.hについてはライブラリの問題となっています。

[C11Status - GCC Wiki](https://gcc.gnu.org/wiki/C11Status "C11Status - GCC
Wiki")

最新のLinuxで2.16以上のglibcを採用しているのであれば、ClangでもGCCでもコンパイルは可能です。逆に言うと2.16未満のglibcを使った古いLinuxではGCCやClangをいくら最新にしても、OS
Xと同じくコンパイルはできません。OS XについてはglibcではなくlibSystem.B.dylibというのを使っていますが、macOS
10.12でも対応していないようですので、いつ対応するのかは不明です。


CC BY-SA 3.0
2016-10-31T22:35:54.287
30022
2016-10-31T22:35:54.287
7347
23889
answer