Do czego służy słowo kluczowe volatile? Z góry dzięki.
Volatile jest modyfikatorem, który może wystąpić w deklaracji zmiennej. Zakazuje
on kompilatorowi stosowania "agresywnej optymalizacji" wobec tej zmiennej, ponieważ może być ona zmieniana w sposób którego kompilator nie rozumie:P (nie jest w stanie wykryć).
Dodam tylko tyle: volatile-ulotny,chwiejny,zmienny
Jak mocno kompilator może ingerować w kod przy optymalizacji?
Bardzo mocno moze ingerowac. Wystarczy powiedziec, ze moze cale linie kodu usuwac.
Ogolnie ten modyfikator okresla zmienna ktora jest modyfikowana przez czynniki zewnetrzne niezalezne od uzytkownika - mozesz nia monitorowac np.: stan portow, linii itp.
pzdr
Prosty przyklad...
mamy:
int a = 0;
...
a=5;
printf( "%i",a );
optymalizacja tego wyglada tak:
int a = 0;
...
a=5;
printf( "%i", 5);
(czyli jedno odwolanie sie do pamieci mniej, jak sobie ktos to na asma chce tlumaczyc)...
dodanie volatile_ jesli dobrze rozumiem, blokuje zmiane tej ostatniej linijki z "a" na "5"...