如何使用C代码中的D结构?

时间:2014-02-03 15:42:00

标签: c d

有人能解释我如何使用C代码中的D结构吗?如果我尝试使用它,我会收到这样的错误:

error: storage size of 'myStruct' isn't known
   struct str_struct myStruct;

这是一个结构:

extern(C) {
    struct str_struct {
        string str;
      };
}

我在C中使用它:struct str_struct myStruct;

1 个答案:

答案 0 :(得分:2)

您必须使用两种语言中的所有成员复制结构定义(除非您只想通过指针引用它)。 C无法看到用D写的字段列表。

d

struct Foo {
    int length;
    int* data;
}

C:

typedef struct Foo {
    int length;
    int* data;
};

棘手的是要做多久。 D中的long始终为64位,因此在C中,long longshort。大多数其他基本类型很容易翻译:{{1​​}} => short,int到int,char到char,指针以相同的方式工作,等等。