第一次使用函數指針,我是這樣聲明的,typedef void ( *pSimulatepks )( uint8 *prxBuf, uint8 *prxBufLen );
第一個括號(),將pSimulatepks包成一個指針,第二個括號(),意思就是一個函數的參數列表,所以pSimulatepks是一個函數指針,指向這樣一類函數的指針。
上面聲明了一個函數指針,就可以這樣定義一個函數指針,pSimulatepks pfun;
例如,有一個函數是void fun( uint8 *prxBuf, uint8 *prxBufLen );就可以這樣操作,pfun = fun;
以後調用fun的時候就可以這樣,pfun( rxBuf, &rxBufLen );或者(*pfun)( rxBuf, &rxBufLen );
pSimulate simFunc( uint8 cmd )
{
switch( cmd )
{
case 0x01:
return sim_a;
case 0x02:
return sim_b;
case 0x03:
return sim_c;
case 0x04:
return sim_d;
}
}
其中,sim_a sim_b sim_c sim_d 皆為此類函數的函數名。