#include <stdlib.h>
inline int f0(int a) {
return a*a;
}
inline int f1(int a) {
return a*a*a;
}
int main() {
int (*f)(int);
f = rand()%2 ? f0 : f1;
return f(rand());
}
Quindi con gcc, il file asm generato è lo stesso con o senza in linea. È lo stesso con qualsiasi codice con i puntatori di funzione?Le funzioni utilizzate tramite i puntatori di funzione possono essere allineate?
Si noti che la maggior parte dei compilatori, incluso gcc, non si preoccupano del proprio 'inline' quando decidono se inline qualcosa. Sicuramente posso ignorarlo e sarei sorpreso se la presenza di 'inline' avesse una grande influenza sull'euristica che lo decide. – delnan