在嵌入式代碼中,我已經明白,還有這行代碼:什麼是(void(**)())以及如何typedef它?
*((void (**)()) 0x01) = c_int01; /* Write the interrupt routine entry */
我能掌握的事實,你設置與函數指針c_int01
中斷向量,但我想不出是什麼樣的鑄(void (**)())
是指。我知道標準函數指針符號(void (*)())
,但不是另一個。
我試圖重構代碼,以便它看起來有點更具可讀性像這樣:
// header
typedef void (*interrupt_handler)(); // prototype of an interruption handler
#define INTERRUPT_VECTOR 0x01
#define SET_INTERRUPT_HANDLER(handler) *((interrupt_handler) INTERRUPT_VECTOR) = (handler)
// code
SET_INTERRUPT_HANDLER(c_int01);
但對LHS嵌入式編譯哼唧不beeing的對象。
有人知道這個符號表示什麼嗎? (void (**)())
//編輯:
對於那些interrested,我會明白這更好:
*((void (*)())* 0x01) = c_int01;
它的指針的函數。 – WhozCraig 2013-04-29 10:39:06
MAAAANNN,我怎麼沒有看到...我明白了。 – Gui13 2013-04-29 10:40:59
除非你的平臺具有'sizeof(void(*)())== 1'或向量表開始於一個奇數地址,否則'0x01'不可能是正確的。 – 2013-04-29 17:18:36