我正在阅读比特币 trezor MCU 的代码,发现:
(*(void (**)())(FLASH_APP_START + 4))();
通过分解一些东西,我试图分析这条线的含义:
( *(void (**)())(FLASH_APP_START + 4) ) ();
我可以看到这是一个没有参数的函数调用,因为()
最后是
*(void (**)())(FLASH_APP_START + 4)
指着。
我知道这FLASH_APP_START + 4
会解决一些问题,所以我只需要弄清楚这是什么:
*(void (**)())
它正在解决任何void (**)()
指向的问题。但什么是void (**)()
?也许它看起来像是一个函数的转换。但我不确定。你能给我举个例子来说明这个呼召是什么吗?你为什么需要那个?