这是一些带有中断向量的启动文件摘录。
#pragma DATA_SECTION(interruptVectors, ".intvects")
void (* const interruptVectors[])(void) =
{
(void (*) (void))((uint32_t)&__STACK_END),
resetISR,
nmi_ISR,
fault_ISR,
... /* More interrupt vectors */
Run Code Online (Sandbox Code Playgroud)
void (* const interruptVectors[])(void)- 是一个函数指针数组,必须包含函数名称,但我无法理解(void (*) (void))((uint32_t)&__STACK_END)语法。
(void (*) (void))看起来像一个指向函数的指针,该函数不返回任何内容,没有参数,也没有任何名称。是否可以?
(uint32_t)&__STACK_END是一个指针。还有为什么函数指针和指针放在一起呢?