我在C语言中有一个像这样的结构:
struct print_arg {
struct print_arg *next;
enum print_arg_type type;
union {
struct print_arg_atom atom;
struct print_arg_field field;
struct print_arg_typecast typecast;
struct print_arg_flags flags;
struct print_arg_symbol symbol;
struct print_arg_func func;
struct print_arg_string string;
struct print_arg_op op;
struct print_arg_dynarray dynarray;
};
};
我正在使用 swig
导出一个 python
绑定。实际上 swig 不支持像这样的嵌套联合体,但是使用变量声明就可以解决:
union {
struct print_arg_atom atom;
struct print_arg_field field;
...
} value;
这个解决方案对我来说并不适用,因为它会破坏使用这个结构的大量C代码(你改变了访问联合成员的方式)。
我想到两种可能性:
- 添加
value
变量声明,这样swig问题就解决了,但我需要一种在C中直接访问联合成员的方法(以避免破坏大量函数)。你知道一种或多种吗? - 在swig中找到其他方法。你知道一种或多种吗?