Hasonló az inline kulcsszó a CPP-ben.
A CPP az C++ itt? C-ben is van, legalabbis C99 -ben mar igen.
De amugy igen, voltakepp hasonlo, vegulis a mai modern compiler-ek eleg okosak, hogy maguktol is kitalaljak, mikor mi kell, ez igaz kb az inline -ra es a register -re is. Sot, szerintem az esetek 99%-ban (csak tipp persze) rosszabbul is jar az ember, ha megprobal okosabb lenni a forditonal, foleg egy modern architekturan, ahol van mondjuk 32db regisztered, es pl register -nel nem biztos, hogy fejben tartja mar az ember, hogy mit erdmesebb valoban CPU regiszterben tarolni es mit nem
Ugyanakkor, a register kulcsszo hasznalata elvileg azt is maga utan vonja, hogy "nincs cime", tehat az ilyen muveletet akkor egyes C forditok meg sem engednek, annak ellenere, hogy amugy a register kulcsszo sok mindenre nincs hasznalva ... Pl:
void akarmi ( void ) {
register int a;
int *p = &a; /* gcc eseten forditasi hibat okoz ez a sor, ami persze nincs, ha nincs az elozo sorban ott a "register" kulcsszo ... */
... stb ...
Ha nem hasznaljuk viszont a register kulcsszot, attol lehet, hogy a fordito azt csinal belole, am sajat magatol lemond errol, ha pl a cimet akarja valami, mig fentebb pl nem.
Masik hasonlo erdekesseg, hogy miket csinalnak a mai compiler-ek, az pl konkretan az volt, hogy pont emu irasnal futottam abba bele, hogy mi az optimalisabb (itt epp kepet akar renderelni az ember, es a p mondjuk legyen egy pointer ami mutat a kirajzolando pixel-re, a lenti pelda persze nem a valodi eset pont, de most mindegy):
*(p++) = ...;
*(p++) = ...;
*(p++) = ...;
*(p++) = ...;
/* A fenti a jobb, vagy pedig ez itt lentebb: */
p[0] = ...;
p[1] = ...;
p[2] = ...;
p[3] = ...;
p += 4;
Raadasul a "p" adott esetben nalam pl egy globalis valtozo volt, mert kell kesobb is. Nos, legalabbis gcc-vel (pont az emlitett -S kapcsolo hasznalataval, hogy lassam milyen asm kodot allit elo), kiderult, hogy a ketto kb tok ugyanazt erredmenyezi. Raadasul igen okos is a fordito: bar a "p" pointer nem igazi "register" tema, mert hat a renderelo fuggveny utan meg kell tartani az erteket, es eleve mint globalis valtozo szerel, stb, a gcc legalabbis azt csinalta, hogy egyszer betoltotte egy regiszterbe es szepen ott hasznalgatta, aztan a fuggveny vegen egyszer irta vissza a memoriaba. Meg az elso esetben is, ahol azt varna pedig az ember, hogy a sok p++ miatt ezt minden lepes utan megcsinalja. Valojaban, ez akar problema is lehet, ha pl multi-thread programunk van, es masik thread is nezi az erteket (es arra szamitunk hogy allandoan no), vagy pl oprendszert fejlesztunk, es interrupt handler, stb, ekkor ugye ajanlatos meg a "volatile" kulcsszot hasznalni, jelezve a forditonak, hogy ne csinaljon ilyen optimalizaciokat, mert lehet, hogy 'varatlanul' kell 'mashol is' az erteke. Na, igazabol - mint mindig - nem tudom normalisan, szepen es eleg precizen kifejezni magam
de remelem azert ertheto
Es akkor lehetne meg olyan erdekessegekrol is beszelni, mint pl a "restrict" kulcsszo szerepe (szinten C99).