如何包装用__attribute __((packed,aligned(1)))定义的C结构?

时间:2017-02-02 05:27:31

标签: swig

如何在SWIG中包装用__attribute__((packed,aligned(1)))定义的C结构?

1 个答案:

答案 0 :(得分:0)

你需要做几乎没有任何事情来完成这项工作,只需#define属性即可:

%module test

#define __attribute__(x) 
struct foo {} __attribute__((packed,aligned(1)));

将按预期进行解析和工作。

这样做的原因是SWIG不会生成任何关心对象布局或大小的代码。它也不会生成对其做出任何假设的代码。相反,所有访问/ malloc / new都是通过编译器处理的,编译器完全正常地编译生成的代码。

因此,只要您确保结构的定义(编译模块的编译器所看到的)是正确的,您就不会遇到任何问题。