При передаче в функцию volatile переменной есть два совершенно разных по смыслу подхода:
Код
volatile int x;
void func(int x);
func((int)x);
Код
volatile int x;
void func(volatile int* x);
func(&x);
Что Вам требуется то и выбирайте. Warning'a не будет в любом случае.
Цитата(Lexy_one @ Jul 27 2011, 12:12)

Как оказалось данное сообщение возникает например при включение нескольких переменных (volatile) в математические вычисления или при передаче их в функции...
Раньше боролся с этим путем создания темповых переменных и переприсвоения... Но считаю что данный подход не совсем правильный и хочу услишать мнения "знающих"
Нормальный подход.
Вопрос в том что volatile должен применяться исключительно к месту а не абы как.
Если у Вас действительно есть необходимость в волатильности переменных то другого выхода кроме как их закешировать нет.