объявлен как Byte? В оригинале оно int
Или для cdecl так можно делать?
Это zlib.pas с 2010-ой дельфи, точнее заголовочник, у которого вызовы перенаправлены с обьектника в библиотеку. Как было в оригинале так и осталось.
значит в оригинальной Си-функции(в той, для которой этот юнит предназначен) этот параметр был char ? Или всё-таки int?
видимо в тех обьектниках которые шли с 2010-ой был Char ну или просто пролюбили параметр, как у них это часто бывает
int он в оригинале, чтобы не заморачиваться со знаковостью чара, по факту там байт.
Ага, я уже привёл внутри к байту, но объявлять-то нужно, наверное, как integer всё-таки
потому как согласно man 3 memset Description The memset() function fills the first n bytes of the memory area pointed to by s with the constant byte c. Ну а передача все равно в регистре...
man 3 memset знает ответ Name memset - fill memory with a constant byte Synopsis #include <string.h> void *memset(void *s, int c, size_t n);
Вот я бы не стал смотреть man для кроссплатформенного софта, сюрприз будет :) И с каких пор cdecl в 32 битах в регистре? Через стек есесно
Обсуждают сегодня