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

> ffi создание указателя на многомерный массив
DarkMaster
сообщение 7.8.2022, 20:11
Сообщение #1


***********

Модератор UOPilot
Сообщений: 9.743
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29658
Пользователь №: 11.279



Собственно есть некоторый указатель на void либо просто number с адресом.
Нужно создать указатель на int[123][321] по этому адресу.
cast ругается на такие выкрутасы ну либо я что-то не так по синтаксису делаю.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 8.8.2022, 18:12
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.743
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29658
Пользователь №: 11.279



Если все-таки будет желание.
Наткнулся на такую весч:
Цитата
-- Declare a struct with a parameterized field type and name:
ffi.cdef([[
typedef struct { $ $; } foo_t;
]], type1, name1)

-- Anonymous struct with dynamic names:
local bar_t = ffi.typeof("struct { int $, $; }", name1, name2)
-- Derived pointer type:
local bar_ptr_t = ffi.typeof("$ *", bar_t)

-- Parameterized dimensions work even where a VLA won't work:
local matrix_t = ffi.typeof("uint8_t[$][$]", width, height)

Собственно из вышеописанного:
Код
local arr = ffi.typeof("int[$][$]", 10, 10)
log(tostring(arr))
arr[1][1] = 1

Создается некоторый объект, который вроде как указатель на правильный массив, но без адреса. Соответственно присвоение ничего не дает и выбивает ошибку, что не может индексивать чилом данный ctype.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
DarkMaster   ffi создание указателя на многомерный массив   7.8.2022, 20:11
Cockney   В плюсах (парсер ffi примерно от туда) нельзя каст...   7.8.2022, 22:49
Cockney   еще вот такой урод можно испытать, сначала делаем ...   7.8.2022, 23:40
DarkMaster   орет invalid C type как только видит квадратные ск...   8.8.2022, 1:12
Cockney   А ескейп работает ? Типа \[\]   8.8.2022, 1:20
DarkMaster   Начинает орать про eof. Такое впечатление как-будт...   8.8.2022, 1:29
Cockney   А в чем сакральный смысл каста именно к размерност...   8.8.2022, 1:38
DarkMaster   Чтобы первый индекс работал второй должен быть из...   8.8.2022, 1:41
Cockney   Чтобы первый индекс работал второй должен быть из...   8.8.2022, 1:52
Cockney   Тут парни чет нагородили https://stackoverflow.co...   8.8.2022, 2:11
DarkMaster   Вот смотри, у нас есть некоторый *int и последоват...   8.8.2022, 2:39
DarkMaster   https://stackoverflow.com/questions/1052818...mens...   8.8.2022, 3:05
Cockney   Могу только посочувствовать и пожелать успехов   8.8.2022, 12:45
Cockney   Если все-таки будет желание. Наткнулся на такую в...   8.8.2022, 18:26
DarkMaster   В таком варианте не понятно как его инициализиров...   8.8.2022, 19:00
Cockney   Сначала тайпдеф, потом создать объектом с типом ar...   8.8.2022, 20:54
DarkMaster   Так в ffi.cdef тайп дефе невозможно сделать что-то...   8.8.2022, 21:38
Cockney   Так в ffi.cdef тайп дефе невозможно сделать что-т...   8.8.2022, 22:55
DarkMaster   local arr = ffi.typeof("int[$...   8.8.2022, 23:46
Cockney   local arr_type = ffi.typeof("int[...   8.8.2022, 23:58
Cockney   local arr_type = ffi.typeof("int[...   9.8.2022, 17:11
DarkMaster   new создаст объект, а не указатель. Если в тип доб...   9.8.2022, 0:39
Cockney   new создаст объект, а не указатель. Если в тип до...   9.8.2022, 0:58
DarkMaster   Адрес могу предоставть - это не проблема. Проблема...   9.8.2022, 1:23
Cockney   а из си можно сразу вернуть int[][] например так i...   9.8.2022, 10:45
DarkMaster   То упадет в обморок при виде скобок...   9.8.2022, 11:32
DarkMaster   declaration specifier expected near 'arr_type...   9.8.2022, 18:13
Cockney   Напомни, а тайпдеф ты пробовал делать внутри cdef ...   9.8.2022, 20:23
Cockney   local ffi = require("ffi") ffi.cd...   9.8.2022, 21:48
DarkMaster   Спасибо. Чую долго бы я еще развлекался... Итогово...   10.8.2022, 2:33


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

 

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