Я пытаюсь использовать D-эквивалентный указатель на функцию как способ указания необязательных функций как одного поля в структуре, для которой я инициализирую массив.Это было бы просто в C (кроме грязного синтаксиса), но я застрял.Эта программа:
struct Foo {
ubyte code;
bool yup;
void function(ubyte[] data, int size) special;
}
void boof(ubyte[] data, int size) {
/*do something*/
}
static immutable Foo[] markdefs = [
{0xF2, true, null},
{0xE4, true, boof},
{0xEE, false, null}
];
void main() {
}
выдает мне следующие ошибки:
funptr.d(17): Error: function funptr.boof (ubyte[] data, int size) is not
callable using argument types ()
funptr.d(17): Error: expected 2 function arguments, not 0
funptr.d(17): called from here: boof()
funptr.d(17): Error: cannot implicitly convert expression (boof()) of type
void to void function(ubyte[] data, int size)
Я использую dmd для D2 на 64-битной машине Linux.