ВУЗ:
Составители:
Рубрика:
2.3 Полезные макросы для работы с указателями из сред разработки 16-
разрядных DOS – приложений (Turbo C, Quick C)
Макросы FP_SEG и FP_OFF могут быть использованы для инициализации
или получения смещения и адреса сегмента переменной, на который ссылается
far указатель. Определение этих макросов находится в файле <dos.h> и
выглядит следующим образом:
#define FP_SEG(fp) (*((unsigned *)&(fp) + 1))
#define FP_OFF(fp) (*((unsigned *)&(fp)))
Прототипы: unsigned FP_OFF(void far *address);
unsigned FP_SEG(void far *address);
Возвращаемое значение:
(FP_OFF) - беззнаковое целое, представляющее собой смещение внутри
сегмента.
(FP_SEG) - беззнаковое целое, представляющее собой адрес сегмента.
Программа # 2.3 демонстрирует использования макросов FP_SEG и FP_OFF
/* получение адреса сегмента и смещения переменной */
/* программа # 2.3 */
# include < dos.h >
# include < stdio.h >
void main ( void )
{
char far * point, ch = 'T';
unsigned int seg_val,off_val;
point = (char far * )&ch;
seg_val = FP_SEG (point) ;
off_val = FP_OFF (point) ;
printf ("Адрес сегмента переменной ch = %04X\n",seg_val);
printf ("Смещение переменной ch относительно "
"начала сегмента = %04X\n",off_val);
return;
}
26
Страницы
- « первая
- ‹ предыдущая
- …
- 24
- 25
- 26
- 27
- 28
- …
- следующая ›
- последняя »