有人能解释我如何使用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;
答案 0 :(得分:2)
您必须使用两种语言中的所有成员复制结构定义(除非您只想通过指针引用它)。 C无法看到用D写的字段列表。
d
struct Foo {
int length;
int* data;
}
C:
typedef struct Foo {
int length;
int* data;
};
棘手的是要做多久。 D中的long
始终为64位,因此在C中,long long
为short
。大多数其他基本类型很容易翻译:{{1}} => short
,int到int,char到char,指针以相同的方式工作,等等。