我想为 C 库(ZeroMQ v3,更具体地说)编写一个小型包装库。
但是,我想知道如何在 CFFI 中声明外部嵌套结构和联合。
可以在此处找到包含相应结构/联合组合的 C 头文件。
到目前为止,CFFI 的文档无济于事,我也无法在网上找到类似的问题。
我会很高兴得到任何帮助!
我想为 C 库(ZeroMQ v3,更具体地说)编写一个小型包装库。
但是,我想知道如何在 CFFI 中声明外部嵌套结构和联合。
可以在此处找到包含相应结构/联合组合的 C 头文件。
到目前为止,CFFI 的文档无济于事,我也无法在网上找到类似的问题。
我会很高兴得到任何帮助!
defcstruct
在这种情况下可以使用。此外,在文档中,您会找到定义外部结构的示例,并且两种可能的插槽是简单的(类型如: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
。