使用Common Lisp CFFI的嵌套结构和联合

时间:2012-12-27 00:09:27

标签: common-lisp zeromq ffi

我想为C库编写一个小包装器库(ZeroMQ v3,更具体一点)。

但是,我想知道如何在CFFI中声明外部嵌套结构和联合。

可以找到包含相应结构/联合组合的C头文件here

到目前为止,CFFI的文档无法提供帮助,我也无法在网上找到类似的问题。

我会很高兴得到任何帮助!

1 个答案:

答案 0 :(得分:2)

在这种情况下可以使用

defcstruct。此外,在docs中,您将找到定义外部结构的示例,以及可能的两种插槽是简单的(类型如:int)和聚合(其他结构的名称) ,所以没有什么能阻止你定义形成那个大联盟的不同结构,然后组成联合(还有一个defcunion构造)。

自己的CFFI实现包含这样的结构的示例和测试:

(defcstruct s-short
  (a-char :char)
  (another-char :char)
  (a-short :short))

(defcstruct s-s-short
  (yet-another-char :char)
  (a-s-short s-short))

请注意,a-s-short的类型为s-short,定义如上。