我嘗試使用 C 呼叫 IRQ 中的函式,下一個代碼我得到了它。
static void (*functionPulsacion)();
void eint2_init(void *funcPulsacion){
functionPulsacion = funcPulsacion;
}
但是當我在 Keil 中編譯時,IDE 會顯示下一條訊息:
Button2.c(38):警告:#513-D:“void ”型別的值不能分配給“void( )()”型別的物體
這樣做的好方法是什么?
先感謝您
uj5u.com熱心網友回復:
確保 的型別funcPulsacion匹配的型別functionPulsacion,如下所示:
static void (*functionPulsacion)(void);
void eint2_init(void (*funcPulsacion)(void)) {
functionPulsacion = funcPulsacion;
}
它有助于使用typedef定義函式指標型別以便可以重用:
typedef void (*functionPulsacion_type)(void);
static void functionPulsacion_type functionPulsacion;
void eint2_init(functionPulsacion_type funcPulsacion) {
functionPulsacion = funcPulsacion;
}
uj5u.com熱心網友回復:
引數變數的語法與靜態變數的語法相同。
static void (*functionPulsacion)(void);
void eint2_init(void (*funcPulsacion)(void)) {
functionPulsacion = funcPulsacion;
}
不過,Typedef 使函式指標更具可讀性。
typedef void (*PulsacionFunc)(void);
static PulsacionFunc pulsacion_func;
void eint2_init(PulsacionFunc a_pulsacion_func) {
pulsacion_func = a_pulsacion_func;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360364.html
下一篇:洗掉雙指標
