uchar.h-Datei wurde unter OS X 10.9 nicht gefunden

Lesezeit: 3 Minuten

Ich habe den Eindruck, dass mein C-Compiler C11 unterstützt, da er das Flag -std=c11 akzeptiert.

$ 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

und uchar.h ist Teil des C11-Standards, also würde ich erwarten, dass dieses Programm kompiliert wird,

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

int main(void) {}

Aber

$ cc /tmp/esc.c 
/tmp/esc.c:1:10: fatal error: 'uchar.h' file not found
#include <uchar.h>
         ^
1 error generated.

Ich habe versucht, die Datei uchar.h zu finden, aber die einzigen Treffer auf meinem System stammen seltsamerweise von iPhone SDKs.

$ 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

Wie kann ich verwenden uchar.h unter OS X 10.9? Muss ich einen neuen Compiler herunterladen oder missbrauche ich den, den ich habe?

  • Ich kenne OSX nicht, aber ich hatte ähnliche Probleme mit der C11-Unterstützung, die align_alloc und verschiedene PRI-Makros für uint8_t und uint64_t verfügbar machte. Haben Sie versucht, inclduing #include <inttypes.h> nach Einstellung #define __STDC_FORMAT_MACROS um Sachen wie uint8_t definiert zu bekommen, was ich benutze. #define _ISOC11_SOURCE // C11 aligned_alloc from posix_memalign(3) oder -D_ISOC11_SOURCE ?

    – Rob11311

    7. Juli 2014 um 11:39 Uhr


  • Ah, wenn ich unter Linux schaue, sehe ich uchar.h Es geht um Unicode-Unterstützung, nicht um unsigned char-Probleme, die ich nur unter Linux habe, derzeit nicht unter Cygwin64. Ich denke also, es ist ein tieferes Problem mit der clib-Unicode-Unterstützung.

    – Rob11311

    7. Juli 2014 um 11:46 Uhr


  • Auf UBUNTU finde ich ucahr.h an /usr/include/uchar.h möge es dir helfen, lauf locate uchar.h auf Ihrer Maschine

    – EsmaeelE

    26. August 2017 um 21:52 Uhr


  • Sehen Dies Zuerst raten sie, den Ort zu finden uchar.h auf Ihrem Computer und zweitens, wenn Sie es nicht finden oder verwenden können, bevorzugen sie die Verwendung unsigned short anstelle von Header-Datentyp so etwas wie char16_t

    – EsmaeelE

    26. August 2017 um 22:00 Uhr

  • Dies ist die Quelle von uchar.h uchar.h

    – EsmaeelE

    26. August 2017 um 22:01 Uhr


Apples macOS (bis einschließlich Catalina 10.15) hat beides nicht <uchar.h> Noch <threads.h>. Es hat nicht die 4 Funktionen, die in deklariert sind <uchar.h> oder andere Funktionen verwenden char16_t oder char32_t.

Code, der auf einen Mac portiert wird, der diese Funktionen benötigt, muss entweder neu geschrieben werden, um seine Verwendung zu vermeiden (zumindest unter macOS), oder er muss durch bedingt kompilierten Code unterstützt werden, der die Funktionen bereitstellt, die er unter macOS benötigt.

Benutzer-Avatar
Huteano

Versuche dies:

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

Wenn es nicht funktioniert hat, schlage ich vor, dass Sie “International Components for Unicode” installieren:

1) Install Macports for OS X
2) Run this in Terminall app: "port install icu"

Es enthält alle erforderlichen Komponenten für Unicode, einschließlich “/opt/local/include/unicode/uchar.h”.

Suchen Sie dann nach geeigneten Optionen für cc:

/opt/local/bin/icu-config --cppflags-searchpath --ldflags --ldflags-icuio

Was gibt dir:

-I/opt/local/include -L/opt/local/lib -licui18n -licuuc -licudata -licuio  

Also kompilieren Sie Ihr Programm wie folgt:

cc -I/opt/local/include -L/opt/local/lib -licui18n -licuuc -licudata -licuio /tmp/esc.c

Ich bin mir nicht sicher, aber wahrscheinlich könnte es auch für Sie funktionieren, icu von seiner Website zu bekommen:

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

  • Das ist <unicode/uchar.h>nicht <uchar.h> Apple hat uchar.h nicht, weil es i18n anders handhabt.

    Benutzer246672

    23. Januar 2019 um 17:08 Uhr

1094720cookie-checkuchar.h-Datei wurde unter OS X 10.9 nicht gefunden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy