有人可以说这段代码是什么意思吗?
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)
我实际上不明白.
Run Code Online (Sandbox Code Playgroud)void (* const rvt[])(void)
手段(由cdecl.org提供):
声明rvt为const指针的函数(void)返回void
T foo = {
value1,
value2,
value3 // ...
};
Run Code Online (Sandbox Code Playgroud)
这是数组的聚合初始化 [1].此外,这意味着声明rvt是一个定义.
Run Code Online (Sandbox Code Playgroud)&__STACK_END
addresof运算符获取变量的内存地址.
Run Code Online (Sandbox Code Playgroud)(unsigned long)&__STACK_END)
地址被unsigned long输入到类型.
Run Code Online (Sandbox Code Playgroud)(void (*) (void))((unsigned long)&__STACK_END)
转换后的值再次转换为指向函数(void)返回void的指针,void是存储在数组中的函数指针的类型.
数组的其余初始化值可以是函数名,函数指针或可以隐式转换为函数指针(如lambdas)的东西.
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |