Ho una funzione static inline
definita in un file H, e ad un certo punto in un file C, sto assegnando un puntatore alla funzione, qualcosa di simile:C: Puntatore inline funzione
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();
Quindi penso che ciò che accadrà qui è che il compilatore inline la chiamata a frobnicate
da bar.c, ma in foo.c, in realtà dovrà creare una funzione per implementare frobnicate
, in modo che possa avere un funzionamento puntatore ad esso.
Qualcuno può confermare se la mia comprensione è accurata e correggermi altrimenti?
* È possibile confermarlo, leggendo il codice generato. Non penso che ci sia un modo specifico in cui * deve * funzionare. Non sarei sorpreso se il compilatore dicesse "qualcuno vuole l'indirizzo di questo, quindi cerchiamo di non inserirlo, quindi". – unwind
Ricorda che 'inline' è solo una _suggestion_ per il compilatore –