我有在H文件中定義的static inline
功能,並在一個C文件中的一個點,我指定一個函數指針,是這樣的:C:指針內聯函數
了foo.h :
static inline void frobnicate(void) {
// frobs something.
}
foo.c的
#include "foo.h"
void execute(void (*func)(void)) {
func();
}
void blahBlahBlah(void) {
execute(frobnicate);
}
bar.c
#include "foo.h"
// ...
frobnicate();
所以我認爲在這裏會發生的事情是,編譯器將內聯從bar.c中調用frobnicate
,但在foo.c中,它實際上必須創建一個函數來實現frobnicate
,以便它可以工作指向它的指針。
任何人都可以確認我的理解是否準確,否則糾正我?
*您可以通過閱讀生成的代碼進行確認。我不認爲這個*具有特定的工作方式。如果編譯器「有人想要這個地址,那麼我們就不要內聯」。 – unwind 2012-01-16 20:10:03
請記住,'inline'對於編譯器來說只是一個_suggestion_。 – 2012-01-16 20:10:23