我对"功能如何"感到困惑。 getmaxyx
有效...因为我知道它实际上是一个宏。但是这个宏如何运作?
代码示例:
#include <ncurses.h>
int main() {
int col, row;
initscr();
getmaxyx(stdscr,row,col);
endwin();
return 0;
}
答案 0 :(得分:2)
阅读ncurses.h
标题文件后发现getmaxyx
确实是一个宏:
#define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win))
进一步调查显示getmaxy
和getmaxx
也是宏:
#define getmaxx(win) ((win) ? ((win)->_maxx + 1) : ERR)
#define getmaxy(win) ((win) ? ((win)->_maxy + 1) : ERR)
现在,参数win
是指向WINDOW
的指针。实际上,WINDOW
是struct _win_st
的typedef。仔细阅读这个结构会显示以下字段:
NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */
因此,当创建新窗口时,它与WINDOW
结构相关联,该结构包含有关窗口的信息。特别是,窗口的最大x和y坐标存储在字段_maxx
和_maxy
中。宏getmaxyx()
可以访问这些字段以提供窗口尺寸。