Чтение/запись/проверка переменной которая не является атомарной, например 2-х байтной в AVR или 4-хбайтной в MSP, может быть некорректной если ее значение изменяется в прерывании. По этому такие действия должны производиться через функцию которая запрещает прерывания на критическом участке кода. Если я в обычном C обращаюсь к переменной через специальные функции или напрямую - компилятор молча пропускает прямой доступ. В С++ я могу объявить переменную как "private" и компилятор укажет на ошибку.