Mam static inline
funkcję zdefiniowaną w pliku H inline, aw pewnym momencie w pliku C, mam przypisując wskaźnik do funkcji, coś takiego:C: Wskaźnik do funkcji
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();
Więc myślę, że to, co się tutaj stanie, to, że kompilator zainicjuje połączenie z frobnicate
z paska.c, ale w foo.c będzie musiał utworzyć funkcję do implementacji frobnicate
, aby mógł działać wskaźnik do niego.
Czy każdy może potwierdzić, że moje zrozumienie jest prawidłowe, i poprawić mnie w inny sposób?
* Możesz * potwierdzić, czytając wygenerowany kod. Nie sądzę, że istnieje określony sposób, w jaki to * działa *. Nie zdziwiłbym się, gdyby kompilator napisał: "ktoś chce adresu, więc nie wpisujmy go". – unwind
Należy pamiętać, że 'inline' to tylko _suggestion_ do kompilatora –