Fino a qualche tempo fa il mio codice base era molto vicino a #include
inferno. Ogni volta che ho modificato un file .h leggermente importante, praticamente tutti i file sono stati ricompilati.
Il motivo principale per una tale elevata percentuale di intestazioni è che ho molte piccole funzioni che devono essere in linea e avevo l'impressione che per essere in linea debbano essere nella stessa unità di traduzione del codice chiamante, quindi hanno bisogno essere nell'intestazione. Per la funzione inline per compilare anche altre intestazioni devono essere incluse anche nell'intestazione, ad estrema importanza.C++: funzioni inline e generazione del codice di tempo di collegamento
Immettere link-time code generation (in Visual Studio). Uno dei principali vantaggi dichiarati è che ora la funzione in linea può attraversare le unità di traduzione.
Ma sono ancora incerto. Come posso essere davvero sicuro che queste funzioni vengano davvero sottolineate? Mi rendo conto che il compilatore può fare praticamente qualsiasi cosa diavolo voglia, non importa dove definisco la funzione.
C'è un modo per controllare cosa viene inserito?
Perché è così essenziale che queste funzioni siano in linea? Sembra strano Di solito, si desidera che le funzioni siano in linea * quando ne beneficiano le prestazioni *, che il compilatore è in genere più in grado di determinare rispetto a – jalf
@ Rüdiger Stevens - In realtà, è possibile. Controlla l'opzione ': PGINSTRUMENT' di VC++ sul flag/LTCG. http://msdn.microsoft.com/en-us/library/xbf3tbeh%28VS.80%29.aspx –