Hファイルで定義されたstatic inline
関数があり、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
のポインタが機能します。
誰かが私の理解が正しいかどうかを確認し、そうでない場合は訂正できますか?