我無法理解這部分代碼有人可以解釋我發生了什麼?函數名稱轉換爲uint32_t
我有2個功能:
void timer_irq_handler(void) {
....
}
void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
....
}
然後我得到了這樣的事情:
NVIC_SetVector(TIM_MST_IRQ, (uint32_t)timer_irq_handler);
我不明白投無效功能(uint32_t的)
它將類型'void(*)(void)')的函數指針轉換爲'uint32_t',據推測可以將其存儲在某個中斷向量中。 –
感謝您的快速回復,現在我明白了更多,但還有一個問題需要完全教育。這個鑄造的結果是什麼?這是指針的地址嗎? – Wodji
如果系統是64位系統,這完全是致命的。在32位系統上,指針將作爲數字進行傳輸 - 這不是特別好的做法,但它可能「起作用」。代碼應該使用'uintptr_t';它將在大小(sizeof(void *)== sizeof(void(*)(void))'',這是大多數(但不是全部)機器的機器上工作。 –