Операционная система UNIX. Руководство программиста

     

Файл <curses.h>


В файле <curses.h> определяются несколько глобальных переменных и структур данных, а также те из подпрограмм пакета, которые в действительности являются макросами.

Начнем с рассмотрения определяемых в файле переменных и структур данных. В файле <curses.h> определены параметры всех подпрограмм, входящих в пакет curses. Кроме того, определяются целочисленные переменные LINES и COLS, которым при выполнении программы назначаются значения соответственно вертикального и горизонтального размера экрана. Это делается при вызове описываемой ниже подпрограммы initscr(). В файле определяются также константы OK и ERR. Большинство подпрограмм curses возвращают OK при нормальном завершении и ERR при возникновении ошибки.

Примечание

LINES и COLS являются внешними (глобальными) переменными, представляющими размеры экрана. В пользовательском окружении можно установить значения двух подобных им переменных, $LINES и $COLUMNS. Программы curses используют значения этих переменных окружения для определения размера экрана. В этой главе при ссылках на переменные окружения используется знак $, чтобы отличить их от переменных, объявляемых в файле <curses.h>. Дополнительную информацию об этих переменных см. ниже в разделах Подпрограммы initscr(), refresh() и endwin() и Еще о строках, столбцах и подпрограмме initscr().

Рассмотрим теперь макроопределения. Многие подпрограммы curses

определены в <curses.h> как макросы, которые обращаются к другим подпрограммам и макросам из curses. Например, refresh() является макросом. Определение

#define refresh() wrefresh(stdscr)

показывает, что вызов refresh расширяется в обращение к также входящей в curses подпрограмме wrefresh(). Эта последняя, в свою очередь, вызывает две другие подпрограммы curses: wnoutrefresh() и doupdate(). Многие подпрограммы обеспечивают нужный результат, группируя два-три обращения к другим.

Предостережение

Макрорасширения curses могут создать проблемы при использовании некоторых конструкций языка C, например, ++ или --.

Одно последнее замечание о <curses.h>: он автоматически включает <stdio.h>, файл интерфейса с драйвером tty, <termio.h>. Повторное включение в программу этих файлов безвредно, но и бессмысленно.



Содержание раздела