1
#define START ((void (**)(int)) 0x0fff)

*START = &fun_foo();

これは見たことがありません。ここで何が起きてるの?void (**)(int) は関数ポインタですか?

4

2 に答える 2

3

void (**)(int)intを取り、何も返さない関数へのポインタへのポインタです。

したがってSTART、は関数ポインタへのポインタであり、*STARTを指すように設定されている実際の関数ポインタfun_fooです。

于 2012-10-05T05:00:20.250 に答える
1

あなたの場合、は関数ポインタへのSTARTポインタ(固定アドレスにあります)です。0x0fff

しかし、この回答で提案したように、読みやすさの理由から、typedefその指摘された関数のシグニチャにaを使用することをお勧めします。

于 2012-10-05T04:59:27.413 に答える