【发布时间】:2015-08-29 00:15:42
【问题描述】:
我想调用下面的函数并传递一个带参数的函数。这样做的目的是它应该使用我指定的参数调用该函数,以便我知道是什么触发了该函数(在这种情况下是 Raspberry Pi 上的 gpio 引脚)。
int wiringPiISR( int pin, int edgeType, void (*function)( void ) );
目前我有:
for ( int i = 0; i < myValues.size(); ++i )
{
int myValue = myValues[ i ];
wiringPiISR( myValue, INT_EDGE_RISING, &myCallback( myValue ) );
}
虽然这给了我以下错误:
错误:需要左值作为一元“&”操作数
就我的理解而言,我无法真正理解,myValue 是左值还是不是?
这是我想要做的吗?如果有怎么办? 函数wiringPiISR来自一个名为wiringPi的库,我想尽可能避免修改它。
【问题讨论】:
-
你的意思是一个函数,它接受一个参数,但它有一个预定义的值,以便可以在没有参数的情况下调用它?
-
不完全确定您的意思,但我想是的。我想要完成的就是给wiringPiISR一个函数来调用我提供的参数,以便wiringPiISR使用提供的参数调用函数。猜猜我在这里用错了术语,编辑了问题。
-
&myCallback(myValue))与&(myCallback(myValue)))相同,因此您在myCallback的返回值上获取地址。由于myValue已经是第一个参数,您可能只需要传递&myCallback。但我们无法从当前的上下文中判断出来。
标签: c++ c++11 function-pointers void-pointers