2013-05-19 66 views
2

函數原型是瞭解一個C原型

int alt_irq_register (alt_u32 id, void* context, void (*isr)(void*, alt_u32));

是什麼半句是什麼意思? *isr在做什麼?

+2

這是一個典型的函數指針,大致轉換爲void void(void *,alt_u32) - 中斷請求?非常低級,尊重。 –

+1

嘗試['cdecl'](http://cdecl.ridiculousfish.com/?q=void+%28*isr%29%28void*%2C+alt_u32%29)。 –

+0

@Kerrek:該頁面幫助很多; D –

回答

5

它是一個指向函數的指針。您必須使用函數作爲alt_irq_register函數的參數。例如:

void irq_handler(void *ptr, alt_u32 val) { /* my function */ 
    /* I'm handling the interupt */ 
} 
int alt_irq_register (alt_u32 id, void* context, void (*isr)(void*, alt_u32)); 

在代碼中,你必須使用這種方式alt_irq_register功能:

/* your code */ 
ret = alt_irq_register(id, context_ptr, irq_handler); 
/* other code */ 

我假定這個功能寄存器和中斷處理程序,所以在註冊時要傳遞到系統當相關的中斷髮生時它必須使用的函數。

2

這是一個指向函數的指針。該函數有兩個參數(void*alt_u32)並且不返回任何內容(void)。其參數名稱爲isr