2017-12-31 103 views
1

OS X 10.13.2 (hohe Sierra).Curses-Bibliothek unterstützt keine breite Zeichen auf OS X hoch Sierra

Ich versuche einfach Flüche Programm mit widechar Unterstützung zu schreiben, aber es scheint, dass Standard (vorinstalliert Bibliothek) Flüche nicht unterstützt widechar:

Simplest Programmbeispiel (von here):

#include <ncursesw/ncurses.h> 
#include <locale.h> 
#include <wchar.h> 

int main() { 
    setlocale(LC_ALL, ""); 
    initscr(); 
    wchar_t wstr[] = { 9474, L'\0' }; 
    mvaddwstr(0, 0, wstr); 
    refresh(); 
    getch(); 
    endwin(); 
    return 0; 
} 

nicht kompilieren, gibt Fehler:

test.cpp:1:10: fatal error: 'ncursesw/ncurses.h' file not found

in Handbuchseiten zu finden versucht:

man addwstr says:

#include <curses.h> 

    int addwstr(const wchar_t *wstr); 
    int addnwstr(const wchar_t *wstr, int n); 
    int waddwstr(WINDOW *win, const wchar_t *wstr); 
    int waddnwstr(WINDOW *win, const wchar_t *wstr, int n); 
    int mvaddwstr(int y, int x, const wchar_t *wstr); 
    int mvaddnwstr(int y, int x, const wchar_t *wstr, int n); 
    int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr); 
    int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n); 

Wie man-Seite sagt, versucht "curses.h" statt "ncursesw/ncurses.h" aufzunehmen. Erneut kompilieren Fehler:

test.cpp:9:5: error: use of undeclared identifier 'mvaddwstr'; did you mean 'mvaddstr'?

Versucht, alle wishchar bezogene Curses Header in/usr/include zu finden. Kein Ergebnis. Irgendwelche Vorschläge?

Antwort

1

Das zweite Beispiel (unter Verwendung von <curses.h>) wird mit MacOS arbeiten, wenn Sie einen Befehl wie folgt verwenden:

gcc -o foo -D_XOPEN_SOURCE_EXTENDED foo.c -lncurses 

Das heißt:

  • Sie sich auf eine Definition zu machen haben die breit zu machen -character Features sichtbar (die Sie durch Lesen der Header-Datei sehen konnten), und
  • der Bibliotheksname ist "ncurses" (obwohl es die Wide-Character-Funktionen enthält).

Do

nm /usr/lib/libncurses.dylib | grep addwstr 

dies zu sehen:

0000000000024c39 T _addwstr 
0000000000024fba T _mvaddwstr 
00000000000254ad T _mvwaddwstr 
000000000002580c T _waddwstr 
Verwandte Themen