在嵌入式代码中,我已经明白,还有这行代码:什么是(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