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.