Legjobb válasz
Ha egy függvényt statikusként definiálunk, a függvény csak ugyanazon forrásfájlban láthatók és használhatók. Nem hívható a forrásfájlon kívülről, ahol meg van határozva (kivéve, ha egy függvénymutatót használunk a meghívására). A függvény gyakorlatilag „el van rejtve” az aktuális forrásfájlon kívüli nézet elől.
Ha egy függvényt beillesztve definiálunk, akkor a fordító létrehozza a függvény belső részének kódját ott, ahol a függvényhívások történnek, ahelyett, hogy hívásokat generálna a függvényre. Ez a technika javíthatja a teljesítményt a funkcióhívás általános költségeinek kiküszöbölésével, de ennek következtében megnövelheti a létrehozott kód memóriaterületét. A fordító azonban nem köteles a függvény kódját inline létrehozni, így ha a függvény túl hosszú vagy összetett, vagy a fordító valamilyen oknál fogva egyszerűen nem tudja megtenni, akkor normál függvényhívás jön létre. Ezért mondjuk, hogy az inline csak egy utalás a fordítónak.
Ezek összerakása, egy olyan függvény, amelyet mindkét statikus és beágyazott olyan, amely láthatatlan lesz az aktuális forrásfájlon kívül, és amelynek kódja generáljon inline, bárhová hívja, ha a fordító meg tudja csinálni. Ezt a megközelítést általában nagyon kicsi, egyszerű, gyakran hívott belső segítő funkcióknál használják, amelyek nem részei egy nyilvános API-nak.
Válasz
Inline függvények esetén a ezeket a függvényhívás általános költsége nélkül átmásolja a hívó funkcióba.
A kernelben széles körben használják. Ez általában a teljesítmény javításának és az optimalizálásnak a módja, bár nem feltétlenül ez a helyzet.
Főleg kis időre kritikus funkciókhoz használják, és ezzel nagy teljesítménybeli különbségeket tapasztalhatunk.
Még akkor is, ha nem inline kulcsszót használunk, a fordító megpróbálhatja az optimalizálás részeként a beillesztést.
Alapszabályként a statikus inline függvényeknek egy fejlécben kell lenniük. Meghatároz egy belső funkciót, belső összekapcsolással. Tehát azt mondhatjuk, hogy az ilyen függvények lokálisak lesznek egy fordítási egység számára, és beágyazódnak benne.