如何将外部数组的索引值指定为外部结构的值。例如,以下内容:
(cffi:with-foreign-objects ((x '(:struct my-struct))
(arr '(:struct my-struct) 2))
(setf (cffi:mem-aref arr '(:struct my-struct) 0)
(cffi:mem-ref x '(:struct my-struct))))
我希望与
大致相同struct my_struct *x;
struct my_struct arr[2];
// x is initialized somewhere
arr[0] = *x;
相反,它想要调用泛型函数cffi:translate-into-foreign-memory
。是否有任何方式SETF外来内存到外来内存,通过这个?
答案 0 :(得分:1)
在irc.freenode.net #lisp上的其他几个人的帮助下,我们发现了:使用memcpy
:
(cffi:with-foreign-objects ((x '(:struct my-struct))
(arr '(:struct my-struct) 2))
(cffi:foreign-funcall "memcpy"
:pointer (cffi:mem-aptr arr '(:struct my-struct) 0)
:pointer x
:int (cffi:foreign-type-size '(:struct my-struct))
:void))