虽然使用c2hsc
和hsc2hs
为我节省了大量工作,但在尝试为C联盟创建绑定时遇到了一些麻烦。
例如,给定C结构
typedef struct {
int tag;
union {
char a;
double b;
} v;
} sum_t;
c2hsc
为我创建以下代码:
#starttype sum_t
#field tag , CInt
#field v ,
#stoptype
其中v
字段为空。通过hsc2hs
进一步向下进入工具链会产生错误的
data C'sum_t = C'sum_t{
c'sum_t'tag :: CInt,
c'sum_t'v ::
}
现在的问题是
.hsc
代码的正确方法是什么,以便我可以使用绑定?c2hsc
自动执行此操作?答案 0 :(得分:0)
c2hsc
只生成bindings-dsl
个宏。使用documentation there,您应该能够找出如何直接编写这些内容。考虑一下像......
#starttype struct sum_t
#field tag , CInt
#field v.a , CChar
#field v.b , CDouble
#stoptype
文档goes on to describe如何使用指针操作联合。