2012-06-24 11 views
8

ho studiato cheprofondità di inlining in compilatore GCC

L'identificatore di linea è un suggerimento per il compilatore che dovrebbe tentare per generare il codice [...] in linea piuttosto che recante il codice per la funzione una volta e quindi chiamando attraverso la solita funzione chiamata meccanismo.

Domande:

  1. Se l'ottimizzazione è disattivata per il compilatore GCC, è l'identificatore di linea ignorati?
  2. Quando funzioni incorporati saranno chiamati ricorsivamente, opzione quale compilatore determina la 'profondità di inlining', finché segue il meccanismo funzione chiamata normale?
  3. Se la funzione inline viene richiamata all'interno di un ciclo for, fa lo stesso 'profondità di inline' entrare in scena?

risposta

7

Se l'ottimizzazione è disattivata per il compilatore GCC, è l'identificatore di linea vengono ignorati?

Sì, se l'ottimizzazione è disattivata in GCC, nessuna funzione sarebbe in linea. È equivalente all'utilizzo del flag -fno-inline durante la compilazione. Vedere questo link

-fno-inline

Don't pay attention to the inline keyword. Normally this option is used to keep the compiler from expanding any functions inline. Note that if you are not optimizing, no functions can be expanded inline.

Quando funzioni incorporati saranno chiamati ricorsivamente, opzione quale compilatore determina la 'profondità di inlining', finché segue il meccanismo funzione chiamata normale?

Opzioni max-inline-recursive-depth e max-inline-recursive-depth-auto. profondità di default è 8.

2

Oltre -fno-linea, è anche necessario utilizzare -fno-default-linea per disabilitare le funzioni inline nelle classi. Questo è utile quando usi gdb per entrare in quelle funzioni inline.

Problemi correlati