У меня сложилось впечатление, что мой компилятор 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
и uchar.h
является частью стандарта C11, поэтому я ожидаю, что эта программа скомпилируется,
$ cat /tmp/esc.c
#include <uchar.h>
int main(void) {}
Но
$ cc /tmp/esc.c
/tmp/esc.c:1:10: fatal error: 'uchar.h' file not found
#include <uchar.h>
^
1 error generated.
Я попытался найти файл 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
Как я могу использовать uchar.h
в OS X 10.9? Мне придется загружать новый компилятор, или я неправильно использую тот, который у меня есть?
#include <inttypes.h>
после установки#define __STDC_FORMAT_MACROS
, чтобы определить такие вещи, как uint8_t, что я и использую.#define _ISOC11_SOURCE // C11 aligned_alloc from posix_memalign(3)
или-D_ISOC11_SOURCE
? - person Rob11311   schedule 07.07.2014uchar.h
касается поддержки Unicode, а не проблем с неподписанными символами, которые у меня есть только в Linux, а не в Cygwin64 в настоящее время. Так что я думаю, что это более глубокая проблема с поддержкой юникода в clib. - person Rob11311   schedule 07.07.2014ucahr.h
на/usr/include/uchar.h
, может это поможет вам, запуститеlocate uchar.h
на вашем компьютере - person EsmaeelE   schedule 27.08.2017uchar.h
на вашем компьютере и во-вторых, если вы не можете найти или использовать его, они предпочитают использоватьunsigned short
вместо типа данных заголовка, например,char16_t
- person EsmaeelE   schedule 27.08.2017uchar.h
uchar.h - person EsmaeelE   schedule 27.08.2017<uchar.h>
, ни<threads.h>
. В нем нет 4 функций, объявленных в<uchar.h>
, или каких-либо других функций, использующихchar16_t
илиchar32_t
. Код, перенесенный на Mac, которому нужны эти средства, должен быть либо переписан, чтобы избежать их использования, либо поддерживаться условно скомпилированным кодом, который предоставляет необходимые средства. - person Jonathan Leffler   schedule 13.03.2020