Можем ли мы использовать static и volatile вместе в C?
Можем ли мы использовать static и volatile вместе в C?

Видео: Можем ли мы использовать static и volatile вместе в C?

Видео: Можем ли мы использовать static и volatile вместе в C?
Видео: static что это. Статические поля класса. Инициализация. Ключевое слово static. C++ #92 2024, Ноябрь
Anonim

Статический переменные сохраняют свое значение между вызовами функций. Летучий переменные (что не является противоположностью статический ) находятся использовал когда переменная использовал как внутри ISR (подпрограммы обслуживания прерывания), так и вне ее. Летучий сообщает компилятору всегда загружать переменную из ОЗУ, а не кэшировать ее в регистре ЦП.

Точно так же можно спросить, можем ли мы использовать static и volatile вместе?

Даже если ты доступ к статический значение через несколько потоков, каждый поток жестяная банка иметь свою локальную кешированную копию! Чтобы избежать этого вы можете объявить переменную как статический летучий и это буду заставить поток каждый раз читать глобальное значение. Тем не мение, летучий не заменяет правильную синхронизацию!

Точно так же, почему мы используем volatile в C? Летучие C ключевое слово - это квалификатор, который применяется к переменной при ее объявлении. Он сообщает компилятору, что значение переменной может измениться в любое время - без каких-либо действий со стороны кода, который компилятор находит поблизости. Последствия этого довольно серьезные.

Учитывая это, что означает static volatile в C?

статический относится к области видимости переменной. Если переменная является глобальной, это означает, что область действия ограничена исходным файлом, в котором она была объявлена. Если переменная является локальной для функции, это означает, что память, используемая для хранения этой переменной, находится в статически выделенной памяти приложения.

Можем ли мы использовать const с volatile в C?

да. Переменная жестяная банка быть объявленным как летучий а также постоянный в C . Const модификатор не позволяет изменять значение переменной внутренней программой. Но это не означает, что значение const переменная не должна изменяться внешним кодом.

Рекомендуемые: