我正在尝试使用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)
我在64位Linux机器上使用dmd for D2。
答案 0 :(得分:4)
在第17行,你使用 boof 是一个没有参数的函数调用(D允许没有parens)。你想要的是使用& 运算符来引用 boof 。