This is some startup file excerpt with interrupt vectors.
#pragma DATA_SECTION(interruptVectors, ".intvects")
void (* const interruptVectors[])(void) =
{
(void (*) (void))((uint32_t)&__STACK_END),
resetISR,
nmi_ISR,
fault_ISR,
... /* More interrupt vectors */
void (* const interruptVectors[])(void)
- is an array of function pointers that must contain function names, but I can't understand the (void (*) (void))((uint32_t)&__STACK_END)
syntax.
(void (*) (void))
looks like a pointer to a function that returns nothing, without arguments and doesn't have any name. Is it possible?
(uint32_t)&__STACK_END
is a pointer. And why are the function pointer and pointer together?