c - 指向函数的指针数组,具有不同数量的参数

时间:2016-01-16 17:59:51

标签: pointers function-pointers arduino-ide

我正在创建一个简单的调度程序来执行FIFO队列中包含的函数。

这些函数具有相同的返回类型int,但具有不同数量的int参数。

我尝试实现它this way,但它似乎不起作用。编译器禁止在int(*)()int(*)(int)int(*)(int, int)或任何类型之间进行转换。 (Arduino Sketch编译器)

有没有办法解决这个问题,或者你能推荐一个更好的方法吗?谢谢!

我的代码:

typedef int (*fnptr)(); // Tried this!

int foo(int var) {
    return 0;
}

int main() {
    fnptr fp = &foo; // error: invalid conversion from 
                     // 'int (*)(int)' to 'int (*)()' 
                     // [-fpermissive]
    return 0;
}

1 个答案:

答案 0 :(得分:0)

你可以施放:

fnptr fp = reinterpret_cast<fnptr>(foo);

()是“函数调用运算符”,在这种情况下添加它们根本就没有意义,它将表达式从“取这个函数的地址”改为“取这个函数的地址”返回值“。

请注意,aboev我甚至不包含&,这是因为函数的名称就像一个函数指针,因此它已经是一个地址。