这部分代码的含义是什么?

Jac*_*lma 1 c c++

有人可以说这段代码是什么意思吗?

void (* const rvt[])(void) = {
  (void (*) (void))((unsigned long)&__STACK_END), // The initial stack pointer
  xkg_som,                                  // The reset handler
  xnt_ISR,                                  // The NMI handler
  FaultISR,                                 // The hard fault handler
  IntDefaultHandler,                        // The MPU fault handler
  bgs_stm,                                  // The bus fault handler
  IntDefaultHandler,                        // The usage fault handler
  0,                                        // Reserved
  0,                                        // Reserved
  IntDefaultHandler,                        // The MPU fault handler
};
Run Code Online (Sandbox Code Playgroud)

我实际上不明白.

eer*_*ika 8

void (* const rvt[])(void)
Run Code Online (Sandbox Code Playgroud)

手段(由cdecl.org提供):

声明rvt为const指针的函数(void)返回void


T foo = {
    value1,
    value2,
    value3 // ...
};
Run Code Online (Sandbox Code Playgroud)

这是数组的聚合初始化 [1].此外,这意味着声明rvt是一个定义.


&__STACK_END
Run Code Online (Sandbox Code Playgroud)

addresof运算符获取变量的内存地址.

(unsigned long)&__STACK_END)
Run Code Online (Sandbox Code Playgroud)

地址被unsigned long输入到类型.

(void (*) (void))((unsigned long)&__STACK_END)
Run Code Online (Sandbox Code Playgroud)

转换后的值再次转换为指向函数(void)返回void的指针,void是存储在数组中的函数指针的类型.


数组的其余初始化值可以是函数名,函数指针或可以隐式转换为函数指针(如lambdas)的东西.

  • C中没有"复制列表初始化". (2认同)