Здравствуйте, гость ( Вход | Регистрация )

> Lua number -> pointer cast
Cockney
сообщение 5.11.2019, 13:16
Сообщение #1


********

Master
Сообщений: 1.403
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22547
Пользователь №: 16.156



Вопрос знатокам.

Есть ffi.cdef

Код

    struct image_descriptor {
           unsigned char* address;
           int width;
           int height;
           int length;
    };


далее

Код
local a,w,h,l = getimage()

local img_descr = ffi.cast("struct image_descriptor*")
img_descr.address = a


Получаем ошибку. Собственно, на сколько я понял, в документации написано : только number -> number, pointer -> pointer, иные варианты не допустимы.

Как выкручиваться ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Cockney
сообщение 14.11.2019, 15:39
Сообщение #2


********

Master
Сообщений: 1.403
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22547
Пользователь №: 16.156



Си здесь не причем. Тут нет никакого переименования типов. Например, unsigned char есть по сути тип byte, т.е. аллиас. А что ты предложил - просто каст любого числа, и не просто любого, а знакового, к поинтеру(он же uintptr_t, uint32_t). Т.е. в том int может лежать -1 и это спокойно уйдет в длл, где воспримется как невалидный поинтер. Можно еще вспомнить про размер указателя, но это не так опасно как описанное выше.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 9.7.2025, 19:29
Designed by Nickostyle