如何在SWIG中包装用__attribute__((packed,aligned(1)))
定义的C结构?
答案 0 :(得分:0)
你需要做几乎没有任何事情来完成这项工作,只需#define
属性即可:
%module test
#define __attribute__(x)
struct foo {} __attribute__((packed,aligned(1)));
将按预期进行解析和工作。
这样做的原因是SWIG不会生成任何关心对象布局或大小的代码。它也不会生成对其做出任何假设的代码。相反,所有访问/ malloc / new都是通过编译器处理的,编译器完全正常地编译生成的代码。
因此,只要您确保结构的定义(编译模块的编译器所看到的)是正确的,您就不会遇到任何问题。