Tengo una función static inline
definido en un archivo H, y en un momento en un fichero C, estoy asignación de un puntero a la función, algo como esto:C: puntero a función en línea
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();
Así que creo que lo que sucederá aquí es que el compilador alineará la llamada a frobnicate
desde bar.c, pero en foo.c, en realidad tendrá que crear una función para implementar frobnicate
, para que pueda tener un funcionamiento puntero a ella.
¿Alguien puede confirmar si mi comprensión es correcta y corregirme de lo contrario?
* Usted * puede confirmarlo, leyendo el código generado. No creo que haya una forma específica en que este * tiene * que funcionar. No me sorprendería que el compilador diga "alguien quiere la dirección de esto, así que no lo intentemos, entonces". – unwind
Recuerde que 'inline' es solo una _sugerencia_ para el compilador –