Мой вопрос прост, но я не знаю, как это сделать (или Julia не предлагает такого способа на данный момент): как установить поле значение C struct от Julia?Обновление значения поля C struct от Julia
Представьте, что вы есть тип структуры для представления узла дерева в библиотеке C:
typedef struct node_s
{
int type;
node_t* next;
node_t* children;
node_t* parent;
} node_t;
и скопировать его в Джулии:
immutable node_t
typ::Cint
next::Ptr{node_t}
children::Ptr{node_t}
parent::Ptr{node_t}
end
Теперь предположим, что у вас есть указатель на node_t
выделено в C и хотите обновить поле parent
в Джулии. Я знаю, что у нас есть unsafe_store!
, чтобы обновить значение, указанное указателем, но громоздко вычислить смещение указателя поля parent
(в этом случае это будет sizeof(Int) + sizeof(Ptr{node_t}) * 2
на моей 64-битной машине). Есть ли более простой способ сделать то же самое?
Отличный ответ! Я не знал 'fieldoffset', и такая оптимизация работает очень хорошо. Большое спасибо!. – bicycle1885