C- kielessä makrot oli ainoa tapa kirjoittaa ohjelmakoodia, jossa käännöksessä funktion kutsu varmasti jätetään pois ja kutsukohtaan kopioidaan funktion runko. Optimoiva kääntäjä saattaa kuitenkin tehdä tämän.
C++ -kielessä funktion esittelyn eteen voidaan lisätä sana inline, jolloin pyydetään, että käännöksessä funktion runko kopioidaan kutsun tilalle (kääntäjän ei tosin ole pakko uskoa tätä pyyntöä). C- kielen makroon verrattuna etu on kuitenkin se, että mahdolliset sivuvaikutukset jäävät pienemmiksi:
/* INLINE.CPP */ #include <stdio.h> #define NELIO(a) ( (a) * (a) ) inline int nelio(int d) { return d*d; } int main(void) { int dm=2,di=2, d2m, d2i; d2m = NELIO(++dm); // Yhyy! d2i = nelio(++di); printf("Makro: %3d %3d\n",dm,d2m); printf("Inline: %3d %3d\n",di,d2i); return 0; }Tietenkin makron eduksi jää vielä se, että se ei välitä parametrien tyypeistä. C++:ssahan tämä tietysti voidaan kiertää määrittelemällä useita eri inline -funktioita. Näitä määriteltäessä makrot saattavat jälleen osoittautua käteviksi kirjoituksen lyhentäjiksi!
Kaikkia funktioita ei aina toteuteta inlinena. Usein esimerkiksi silmukat ja monimutkaiset ehtorakenteet on kielletty. Tämä saattaa osittain olla kääntäjäriippuvaista.
Inline -funktioita voidaan esitellä myös toisella tavalla: kirjoitetaan funktio luokan sisään (ks. Tietueessa funktioita).