#define START ((void (**)(int)) 0x0fff)
*START = &fun_foo();
これは見たことがありません。ここで何が起きてるの?void (**)(int) は関数ポインタですか?
#define START ((void (**)(int)) 0x0fff)
*START = &fun_foo();
これは見たことがありません。ここで何が起きてるの?void (**)(int) は関数ポインタですか?
void (**)(int)intを取り、何も返さない関数へのポインタへのポインタです。
したがってSTART、は関数ポインタへのポインタであり、*STARTを指すように設定されている実際の関数ポインタfun_fooです。
あなたの場合、は関数ポインタへのSTARTポインタ(固定アドレスにあります)です。0x0fff
しかし、この回答で提案したように、読みやすさの理由から、typedefその指摘された関数のシグニチャにaを使用することをお勧めします。