Ошибка cannot convert - C (СИ)
Формулировка задачи:
Всем добрый день.
Такое вот задание было:Вывести Объем HDD, дату издания Bios и количество интерф. принтеров.
Все это из под DOS. Использовал Dos Box
И вывел ошибку,показано на скрине
Не со всем понял почему не работает.
#include <stdio.h>
#include <dos.h>
#include <bios.h>
#include <conio.h>
int main(void)
{
int i, status;
printf("\nVolume of memory %d kB\n", biosmemory());
unsigned char far *ptr = MK_FP(0xF000, 0xFFF5);
printf("Date of building BIOS ");
for (i = 0; i <= 7; i++) printf("%c", *(ptr + i));
status = biosequip();
printf("\nCount of printer’s ports %i\n", status&3);
getch();
return 0;
}Решение задачи: «Ошибка cannot convert»
textual
Листинг программы
unsigned char far *ptr = (unsigned char far *) MK_FP(0xF000, 0xFFF5);
Объяснение кода листинга программы
В данном коде происходит следующее:
- Объявляется переменная
ptrтипаunsigned char far *, то есть указатель на неподвижную точку памяти для чтения и записи 8-битных беззнаковых чисел в дальний сегмент. - Значение указателя
ptrинициализируется с помощью функцииMK_FP(0xF000, 0xFFF5), которая преобразует два целых числа в указатель на байт в памяти. В данном случае,0xF000представляет собой сегментный адрес памяти, а0xFFF5— смещение внутри сегмента. Комбинация этих двух значений формирует физический адрес памяти, к которому будет указывать переменнаяptr.