在我的arduino sketch中,我需要一个带有签名void foo()
的函数指针数组。
我正在linux上使用ino
命令行utillity(它使用了avr-g ++)。
但是在定义数组时我遇到了一个非常奇怪的错误。
错误:
error: invalid conversion from ‘void (* (*)())()’ to ‘void (*)()’
在这段代码中
void (*mode_setup[])(void) = {
&show_time_setup,
&set_time_setup,
&set_alarm_setup,
&set_date_setup // <-- generates 3 identical error on this line
};
我不明白我做错了什么,因为...... int foo[] = { 1, 2, 3 };
..完全有效,void (*foo)(void)
是函数指针的语法。
我错过了什么?
编辑:NEVERMIND IM STUPID 函数不是void foo(),而是fptr foo()[fptr =函数指针typedef] 浪费人们时间的真诚道歉
答案 0 :(得分:3)
我可以使用此代码重现您的错误消息
void (*foo())() {}
void (*arr[])(void) = { &foo };
所以看起来函数的签名不是你想象的那样。用于保存指向foo
的数组的数组需要声明如下:
void (*(*arr[])())(void) = {
&foo
};
如果我是你,我会考虑使用typedef ...