2013-04-03 25 views
0

我想了解的ncurses工作的我們稱之爲initscr()爲Ncurses把初始化文件的ncurses lib_initscr.c定義屏幕ncurses - TINFO_SETUP_TERM如何工作?

功能,試圖通過newterm即lib_newterm.c文件打開終端,它使用:

if (TINFO_SETUP_TERM(&new_term, name,fileno(_ofp), &errret, FALSE) != ERR)){ 
} 

和當我打開curses.priv.h爲:

#ifdef USE_TERM_DRIVER 
    #define TINFO_SETUP_TERM(tpp, name, fd, err, reuse) \ 
     _nc_setupterm_ex(tpp, name, fd, err, reuse) 
#else 

    #define TINFO_SETUP_TERM(tpp, name, fd, err, reuse) \ 
     _nc_setupterm(name, fd, err, reuse) 
#endif 

和lib_setup.c的功能被定義爲下:

#ifdef USE_TERM_DRIVER 
    NCURSES_EXPORT(int) _nc_setupterm(
      NCURSES_CONST char *tname, int Filedes, int *errret, bool reuse){ 
      } 
#endif 

我沒有找到哪裏是如果USE_TERM_DRIVER沒有定義,那麼它是如何鏈接到_nc_setupterm();

回答

1

TINFO_SETUP_TERMncurses/tinfo/lib_setup.c(線577中的ncurses 5.9定義的源代碼,以及如何定義函數_nc_setupterm_ex()源)顯示的宏將函數的名稱設置爲_nc_setupterm_nc_setupterm_ex

如果USE_TERM_DRIVER定義則TINFO_SETUP_TERM被定義爲_nc_setupterm_ex_nc_setupterm成爲TINFO_SETUP_TERM的包裝(這是nc_setupterm_ex

如果USE_TERM_DRIVER is not defined then TINFO_SETUP_TERM is defined as _nc_setupterm and the definition of _nc_setupterm`你報不被編譯。