3

虽然使用c2hschsc2hs为我节省了大量工作,但在尝试为 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 :: 
}

现在的问题是

  1. .hsc手动编写代码以便我可以使用绑定的正确方法是什么?
  2. 有没有办法让我c2hsc自动做到这一点?
4

1 回答 1

0

c2hsc只生成bindings-dsl宏。使用那里的文档,您应该能够弄清楚如何直接编写这些。考虑类似...

#starttype struct sum_t
#field tag , CInt
#field v.a , CChar
#field v.b , CDouble
#stoptype

该文档继续描述如何使用指针操作联合。

于 2016-03-19T06:45:33.743 回答