Как создать фиксированный заголовок структуры для массива переменного размера - PullRequest
3 голосов
/ 13 марта 2012

Я хочу создать структурный заголовок фиксированного размера для массива переменного размера на языке программирования D. В "C" можно поместить массив нулевой длины или пустую скобку в качестве последнего элемента, объявленного в фиксированном заголовке структуры, изатем настройте вызовы на Malloc, чтобы включить дополнительное хранилище, требуемое для части структуры данных переменного размера, на первый элемент которой будет ссылаться это последнее объявление.

Но в языке D массив Array является более сложным объектом, и, поскольку я пытаюсь создать набор структурированных строк кода операции, я действительно хочу выразить составную структуру с помощью концевой ссылки на память, так какпоследний элемент (первый элемент массива, следующий за ним.

Как можно объявлять / создавать / работать со структурой памяти составной переменной длины при использовании языка программирования D?

1 Ответ

6 голосов
/ 13 марта 2012

это точно так же, как , как в случае с

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;
}

}

check http://dlang.org/arrays.html#static-arrays:

Статический массив с размером 0 равенразрешено, но для него не выделено место.Это полезно как последний член структуры переменной длины или как вырожденный случай расширения шаблона.

...