Pet*_* Li 3 arrays string struct d
我希望在D编程语言中为可变大小的数组创建一个固定大小的struct头.在"C"中,可以将零长度或空括号数组作为固定结构头中声明的最后一项,然后调整一个调用Malloc,包括数据结构的可变大小部分所需的额外存储,第一个元素将由最后一个声明引用.
但是在D语言中,一个数组是一个更高级的对象,当我试图构建一组结构化的Opcode字符串时,我真的想用一个尾随内存引用来表达一个复合结构,因为它是最终的项目(第一个元素)随后的数组..
在使用D编程语言时,如何声明/创建/使用复合变长存储器结构?
它与你在c中的方式完全相同
struct VarArray(T){
uint length;
T[0] t;
static VarArray!T* allocate(T)(uint length){
VarArray!T* ret = enforce(malloc((VarArray!T).sizeof+T.sizeof*length));
*ret.length=length;
return ret;
}
}
Run Code Online (Sandbox Code Playgroud)
检查http://dlang.org/arrays.html#static-arrays:
允许使用维度为0的静态数组,但不为其分配空间.它作为可变长度结构的最后一个成员,或作为模板扩展的简并情况很有用.