Migliore risposta
Quando una funzione è definita come statica , la funzione può essere visualizzati e utilizzati solo allinterno dello stesso file sorgente. Non può essere chiamato dallesterno del file sorgente in cui è definito (a meno che non venga utilizzato un puntatore a funzione per chiamarlo). La funzione è effettivamente “nascosta” alla vista al di fuori del file sorgente corrente.
Quando una funzione è definita come inline , chiedi al compilatore per generare il codice per gli interni della funzione proprio dove avvengono le chiamate della funzione, piuttosto che generare chiamate alla funzione. Questa tecnica può migliorare le prestazioni eliminando il sovraccarico delle chiamate di funzione, ma può di conseguenza aumentare il footprint di memoria del codice generato. Tuttavia, il compilatore non ha lobbligo di generare il codice della funzione inline, quindi se la funzione è troppo lunga o complessa, o il compilatore semplicemente non può farlo per qualche motivo, viene generata una normale chiamata di funzione. Ecco perché diciamo che inline è solo un suggerimento per il compilatore.
Mettendoli insieme, una funzione che è definita sia statico e inline sarà invisibile allesterno del file sorgente corrente e il cui codice sarà essere generato in linea ovunque tu lo chiami, se il compilatore può farlo. Questo approccio è comunemente usato per funzioni di supporto interne molto piccole, semplici e spesso chiamate che non fanno parte di unAPI pubblica.
Risposta
In caso di funzioni inline, il codice in vengono copiati nella funzione di chiamata senza loverhead della chiamata di funzione.
Nel kernel è ampiamente utilizzato. Questo in genere viene fatto come un modo per migliorare le prestazioni, una maggiore ottimizzazione, anche se non necessariamente il caso.
Viene utilizzato principalmente per piccole funzioni critiche in termini di tempo e possiamo vedere una grande differenza di prestazioni in questo modo.
Tuttavia, anche se non stiamo usando la parola chiave inline, il compilatore potrebbe provare a eseguire linline come parte dellottimizzazione.
Come regola pratica, le funzioni inline statiche dovrebbero essere in unintestazione. Definisce una funzione inline con collegamento interno. Quindi possiamo dire che tali funzioni saranno locali a ununità di traduzione e inline in essa.