Мне интересно о различных применениях ключевого слова volatile в сочетании с register, const и static ключевые слова. Я не уверен, каковы эффекты, поэтому я думаю:
register volatile int T=10;
Предложите компилятору сохранить T в регистре, а значение T можно изменить где-то снаружи (ОС, аппаратное обеспечение, другой поток)
const volatile int T=10;
Сама программа не может изменять T, но T может быть изменена где-то вне кода.
static volatile int T=10;
Если T является членом данных класса, это означает, что все объекты класса имеют одинаковое значение для T и T, которые могут быть изменены извне. Если T - глобальная переменная в файле, исходный код в других файлах (которые являются частью проекта) не может получить доступ к T, но T может быть доступен откуда-то снаружи. Если T - локальная переменная в функции, то после ее инициализации остается в памяти до конца программы и может быть изменена где-то снаружи.
Верны ли мои мысли и может ли любой опытный разработчик С++ привести пример, где вышеупомянутое может быть использовано в реальных приложениях или оно очень редко?