A BORLAND C++ esetében ez azt jelenti, hogy a a volatile jelzõ majdnem az ellentéte a const-nak. Azt jelzi, hogy a tárolási egység elvileg bármelyik pillanatban módosulhat egy, az adott programtól független folyamat (például megszakítási rutin, DMA stb.) által. A fordítóprogram a volatile jelzõ hatására az adott változót nem fogja regiszterben tárolni, és az optimalizálás során sem fogja a többszörös, vagy látszólag felesleges értékadásokat kiiktatni. A volatile módosító jelzõ használatára tekintsük a következõ példát:
volatile int ticks;
void interrupt timer(void)
{
ticks++;
} /* end timer() */
void wait(int interval)
{
ticks = 0;
while (ticks < interval)
;
} /* end wait() */
A timer függvény megszakítási rutinként
aktivizálódik valamely periodikus hardveresemény hatására.
A wait függvény a megszakítási rutin
által módosított ticks értékét
ciklikusan lekérdezi. Nagyfokú optimalizálás
esetén a fordítóprogram generálhat olyan kódot,
amely a ciklusban a ticks értékét csak egyszer
veszi tekintetbe (mert az a ciklusban explicit módon nem változik
meg), ezáltal végtelen ciklust eredményezve. Ennek
elkerülésére szolgál a ticks definíciójában
a volatile jelzõ: a ciklus minden egyes futása alkalmával
ki kell értékelni ticks tartalmát, hiszen
azt egy megszakítási rutin módosítja.