Condividi tramite


Funzioni inline

La inline parola chiave è un identificatore di funzione che indica al compilatore di sostituire il codice all'interno della definizione della funzione per ogni istanza di una chiamata di funzione.

Osservazioni:

La sostituzione del codice inline viene eseguita solo a discrezione del compilatore. Ad esempio, il compilatore non inlineerà una funzione se il relativo indirizzo viene preso o se è troppo grande per inline. Quando il compilatore non esegue l'inline di una funzione definita in un file di intestazione, viene contrassegnato per il linker per evitare violazioni di una regola di definizione (ODR).

Affinché una funzione venga considerata candidata per l'inlining, deve usare la definizione di funzione di tipo nuovo con una firma che dichiara il tipo restituito e qualsiasi tipo di parametro.

Utilizzare questo formato per specificare una funzione inline:

inlinedefinizione di funzione

Le funzioni inline generano codice più veloce e talvolta più piccolo rispetto alla chiamata di funzione equivalente:

  • Le funzioni inline risparmiano il tempo necessario per preparare lo stack per gli argomenti e un valore restituito e il tempo necessario per eseguire il salto e la restituzione di una chiamata di funzione.

  • Anche quando vengono ripetute più volte, piccole funzioni inline di forse tre righe o meno creano meno codice della chiamata di funzione equivalente perché il compilatore non genera codice per gestire gli argomenti e un valore restituito.

  • Il compilatore può ottimizzare le funzioni generate inline in modi che non sono disponibili per le normali funzioni. Il compilatore in genere non esegue ottimizzazioni tra procedure diverse.

Non confondere le funzioni che usano inline con il codice assembler inline. Per altre informazioni sull'assembler inline, vedere Assembler inline.

Specifico di Microsoft

Microsoft supporta __inline anche parole chiave e __forceinline per indicare al compilatore di sostituire il codice all'interno della definizione della funzione per ogni istanza di una chiamata di funzione. La __inline parola chiave è un sinonimo di inline. La __forceinline parola chiave indica al compilatore di ridurre l'euristica se inline la funzione, anche se non garantisce che una funzione venga inlined.

Per la compatibilità con le versioni _inline precedenti e _forceinline sono sinonimi rispettivamente per __inline e __forceinline, a meno che non sia specificata l'opzione /Za del compilatore (Disabilita estensioni del linguaggio).

End Microsoft specific

Vedi anche

inline, __inline, __forceinline