因此,我试图制作一个程序来提供树莓派和加速度计/陀螺仪之间的接口。我需要这个函数尽可能经常更新,我想设置一个计时器,当它将运行。
下面是我的代码:
void updateGyro(Gyro gyro) {
gyro.update();
}
int main() {
if (gpioInitialise() < 0)
return -1;
// Creates new gyro object
Gyro gyro;
// Sets a timer to update every 10 milliseconds
gpioSetTimerFuncEx(0, 10, updateGyro, &gyro);
time_sleep(10);
gpioTerminate();
}
但这似乎不起作用,我得到了一个错误:
gyro.cpp: In function ‘int main()’:
gyro.cpp:113:31: error: invalid conversion from ‘void (*)(Gyro)’ to ‘gpioTimerFuncEx_t’ {aka ‘void (*)(void*)’} [-fpermissive]
113 | gpioSetTimerFuncEx(0, 10, updateGyro, &gyro);
| ^~~~~~~~~~
| |
| void (*)(Gyro)
In file included from gyro.cpp:2:
/usr/include/pigpio.h:3751:55: note: initializing argument 3 of ‘int gpioSetTimerFuncEx(unsigned int, unsigned int, gpioTimerFuncEx_t, void*)’
3751 | unsigned timer, unsigned millis, gpioTimerFuncEx_t f, void *userdata);
| ~~~~~~~~~~~~~~~~~~^
我试过直接将gyro.update函数传入函数,但也不起作用。有谁知道怎么解决这个问题吗?
下面是我想使用的函数的文档:
1条答案
按热度按时间wxclj1h51#
void*
不是任何数量的任何参数的占位符。它的意思就是,指向未知类型的单指针。updateGyro
不接受void*
类型的参数,它接受Gyro
类型的参数。您需要更改您的函数以接受
void*
: