平台
Windows 11 + GCC编译器17(MINGW2)
编译命令
gcc -o main.exe main.c -lncursesw ; ./main.exe
MINGW2包含目录
C:\msys64\mingw64\include
C:\msys64\mingw64\include\ncurses
C:\msys64\mingw64\include\ncursesw
代码
它只是在窗口周围绘制一个边框。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ncurses/curses.h>
#include <wchar.h>
int main()
{
initscr();
int row = 0;
int col = 0;
getmaxyx(stdscr, row, col);
wchar_t * square = L"\u2588";
for (int i = 0; i < row; i++)
{
if (i == 0 || i == row - 1)
{
for (int j = 0; j < col; j++)
{
mvaddwstr(i, j, square);
}
}
else
{
mvaddwstr(i, 0, square);
mvaddwstr(i, col - 1, square);
}
}
refresh();
getch();
endwin();
return 0;
}
问题
编译器似乎认为mvaddwstr
是隐式声明的。然而,我在编译命令中显式链接了ncursesw
库(与常规的ncurses
相反)。
main.c:76:17: warning: implicit declaration of function 'mvaddwstr'; did you mean 'mvaddstr'? [-Wimplicit-function-declaration]
76 | mvaddwstr(i, j, square);
| ^~~~~~~~~
| mvaddstr
尽管有警告,程序工作正常。但是,我还是想解决警告。
尝试解决方案
我尝试在代码中包含来自ncursesw
的curses.h
文件。但是,警告仍然存在。
#include <ncursesw/curses.h>
我还尝试在编译命令中将include添加到ncursesw
目录,但警告仍然存在。
gcc -o main.exe main.c -IC:\msys64\mingw64\include\ncurseswncursesw -lncursesw; ./main.exe
1条答案
按热度按时间ttisahbt1#
解决方案
如this solution中所述,我只需使用
NCURSES_WIDECHAR
启用宽字符支持。修复编译命令