C語言函式指標陣列在ARM中斷中的應用
阿新 • • 發佈:2019-01-28
一、函式指標的宣告與初始化
...
int max_fun(int a, int b);
/*函式指標的宣告,聲明瞭兩個形參都為int型別,返回值為int型別的函式指標*/
int (*fp)(int, int);
/*指標初始化*/
fp = max_fun; //fp = &max_fun 也正確
/*函式指標初始化後的呼叫*/
fp(a,b); //(*fp)(a,b);也正確
...
二、函式指標的typedef
typedef void (*irq_func)(int); //定義一個數組,存放中斷函式指標,其引數型別為irq_func irq_func irq_array[32];
三、函式指標陣列的使用
/* 註冊中斷函式,將中斷函式以指標形式存放在陣列中 */
void register_irq(int irq, irq_func fp)
{
irq_array[irq] = fp;
INTMSK &= ~(1 << irq); //關閉中斷遮蔽
}
/* 此處將fp函式傳入陣列,由於函式名在表示式會蛻變為指標,
* 所以呼叫register_irq()時第二個引數只需要傳入函式名
*/
register_irq(0, key_eint_irq);
陣列元素的使用:irq_array[bit](bit); 將irq_array[bit]替換為一個函式名更容易理解。