У меня есть старая программа, которую я написал в 1995 году. Она написана на Borland C и DOS 6.22. Он использует дальнюю модель с данными в разных сегментах. Программа использует память EMS, и поэтому указатели должны быть далеко. Мне нужно использовать memcmp (a, b, c), но я получаю сообщение об ошибке «Warning panel.c 325: Подозрительное преобразование указателя в функции enterPanel», и я подозреваю, что это потому, что у меня есть дальний указатель. Есть ли дальнейшая версия memcpy, которую я должен использовать? (Я искал такую функцию, но не смог ее найти). Вы можете быть удивлены, почему я не просто кодирую цикл, а хочу использовать встроенную возможность, чтобы добиться максимальной скорости.
Вот фрагмент из моего кода:
ASM function
------------
align 4
public _mainMem
_mainMem label dword
mainMem dd ? ;pointer to main memory (if no EMS)
mov ax,emsSegment ;segment of EMS page frame
mov word ptr mainMem+2,ax
mov word ptr mainMem,0
C program
---------
extern unsigned short _far *mainMem;
short watchArray[80];
unsigned int watchAddress, watchLen;
memcmp((_far*)&mainMem[watchAddress], watchArray, watchLen)
Также я попытался удалить (_far *).