我想为C库编写一个小包装器库(ZeroMQ v3,更具体一点)。
但是,我想知道如何在CFFI中声明外部嵌套结构和联合。
可以找到包含相应结构/联合组合的C头文件here。
到目前为止,CFFI的文档无法提供帮助,我也无法在网上找到类似的问题。
我会很高兴得到任何帮助!
答案 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
,定义如上。