Hvordan Erklærer Inline funksjoner i C ++
I C ++, angir du en C ++ funksjon med inline nøkkelord for å gjøre en forespørsel til kompilatoren for å forbedre funksjonen ytelse. Avhengig av flere faktorer, kan kompilatoren integrere funksjonskoden til den som ringer koden strøm og optimalisere inline-utvidet kode. Inline er en forespørsel, ikke en garanti. Kostnaden for fletting er vanligvis en økning i kode størrelse. Les videre for å lære å erklære inline funksjoner i C ++.
Bruksanvisning
1 Gjøre funksjoner inline i henhold til følgende kriterier. Koden inne funksjonens bukseseler bør ikke overstige tre linjer. Programmets samtaler til funksjonen skal telle i hundrevis eller mer. Husk at altfor ivrige inlining kan forårsake et fenomen som kalles kode bloat. Det betyr også mye å hente inn virtuelt minne, noe som kan redusere ytelsen.
2 Sett inline ordet før funksjonen erklæring og definisjon å betegne at det er inline:
inline void Func (int); // erklæring
inline void Func (int num) {
// 3 linjer med kode
}
3 Inline medlemmet funksjon av en C ++ klasse ved å skrive koden for funksjonen i klassen kroppen. Dette er en alternativ måte å fortelle kompilatoren inline denne funksjonen, men det må være medlem av en C ++ klasse:
klasse Complex {
offentlig:
int Init () {
// 3 linjer med kode
}
4 Finne alternativer til ved hjelp av definere makro, som er et alternativ til en inline-funksjon. Den definerer makro lar preprosessor til inline-utvide en funksjon. Makroer er usikre, fordi de ikke gjør typesjekking:
define avoidIfPoss (i) ((i)> = 0 (I): - (i))
Hint
- Denne opplæringen gjelder også for C-programmering.
- Hvis du vil definere et medlem funksjon som inline hjelp av søkeord, sette søkeordet ved siden av definisjonen utenfor klassen kroppen, ikke ved siden av erklæringen inne i klassen.
- Hvis systemet har 100 funksjoner, hver definert av 10 byte med kjørbar kode, og du kaller hver funksjon i 100 steder i programmet, dette vil øke din kjørbar med 100.000 bytes.
- Funksjon inlining kan øke antall cache målet. En løkke kan få tilgang til mange linjer med minne cache, som kan forårsake minnebufferen til thrash.