#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を使用することをお勧めします。