1) Ключевое слово volatile перед объектом (переменной) служит указателем компилятору о том что объект может быть изменен не из текущей программы и компилятору следует это учитывать при оптимизации.
2) При объявлении объекта (переменной) ключевое слово volatile может стоять до типа данных или после.
#include <iostream> // cout, endl
int main(){
volatile int a = 10;
int volatile b = 20;
std::cout << "a = " << a << ", b = " << b; //a = 10, b = 20
}