我正在将轻量级通信和编组从 julia 移植到 lisp,因为它具有更好的 API。我使用swig生成 C 函数调用。
我想知道这是否是 C 指针的安全用法。这是创建功能:
(defun create-lcm (&optional (provider (null-pointer)))
(let* ((ptr (lcm_create provider))
(addr (cffi:pointer-address ptr)))
(tg:finalize ptr (lambda () (lcm_destroy (cffi:make-pointer addr))))
(if (NULL-POINTER-P ptr)
(error "lcm creation error"))
(%create-lcm :pointer ptr :provider provider
:file-descriptor (lcm_get_fileno ptr))))
问题:
- 完成 C 指针的正确方法是什么?
- 如何为此进行测试?
欢迎任何其他注释/建议。
提前致谢。