Funzioni integrate (inline).
Una funzione integrata ha lo stesso significato di una funzione macro: tutte le chiamate di funzione nel codice vengono sostituite con il codice all'interno della funzione, il che accelera le prestazioni, ma consuma memoria Flash aggiuntiva ad ogni nuova chiamata. A differenza della macro, che è sostituita dal preprocessore, la funzione incorporata è già sostituita dal compilatore, ad es. dopo che il preprocessore è stato eseguito, questo deve essere ricordato e può essere utilizzato. Una funzione integrata
viene dichiarata in modo molto semplice: basta aggiungere la parola chiave inline prima della dichiarazione della funzione. Il compilatore potrebbe rifiutarsi di integrare la funzione (a seconda delle sue impostazioni), quindi puoi chiedergli di forzare l'integrazione della funzione usando l'attributo:
__attribute__((always_inline)).
Pertanto, per dichiarare una funzione integrata, devi scrivere all'inizio:
inline __attribute__((always_inline))
Esempio:
inline __attribute__((always_inline))
int incr(int value)
{
return ++value;
}
Ora le chiamate incr verranno sostituite con il codice. Se hai bisogno di separare la descrizione e l'implementazione, puoi scriverla in questo modo:
inline __attribute__((always_inline)) int incr(int value);
int incr(int value)
{
return ++value;
}