由于某种原因,-std = c99阻止gcc看到函数wborder_set()的声明(该声明位于<curses.h>
)
#include <curses.h>
#include <locale.h>
int main(int argc, char* argv[]){
initscr(); // start ncurses
cbreak(); // don't wait for lf to getch
noecho(); // don't copy entered characters
nonl(); // use /r/l
clear(); // clear the screen!
setlocale(LC_CTYPE, "");
int ySize, xSize;
getmaxyx(stdscr, ySize, xSize);
WINDOW *upperWin = newwin(ySize, xSize, 0, 0);
// magic utf encodings for window border
wborder_set( upperWin, "\u1234", "\u1234", "\u1234", "\u1234",
"\u1234", "\u1234", "\u1234", "\u1234" );
wrefresh(upperWin);
getch();
return 0;
}
编译gcc test.c -lncursesw -o cursestest
正常!但是,如果我用
gcc test.c -std=c99 -lncursesw -o cursestest
它回答,
cursescurses.c: In function ‘main’: cursescurses.c:18:7: warning: implicit declaration of function ‘wborder_set’ [-Wimplicit-function-declaration] wborder_set( upperWin, "\u1234", "\u1234", "\u1234", "\u1234",
这使我相信我不能相信它正确地链接了wborder_set。
为什么会这样?
原来的问题是我输入了错误版本的<curses.h>
。该函数wborder_set
实现unicode,并且需要ncurses库的unicode / wide char扩展,我将其包含在其中#include <ncursesw/curses.h>
。通过这种替换,程序将按预期进行编译。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句