小编kan*_*ler的帖子

什么是 (void (*) (void))((uint32_t)&__STACK_END)?

这是一些带有中断向量的启动文件摘录。

#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是一个指针。还有为什么函数指针和指针放在一起呢?

c c++ syntax interrupt

3
推荐指数
1
解决办法
607
查看次数

标签 统计

c ×1

c++ ×1

interrupt ×1

syntax ×1