Задать вопрос

Что значит const volatile?

Есть адрес порта 0x30.
Что значит данное выражение? И зачем приведение адреса к такому указателю?
const volatile char *port = (const volatile char *) 0x30;
  • Вопрос задан
  • 701 просмотр
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Учебная программа “Разработка программного обеспечения”
    30 месяцев
    Далее
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
const — чтобы исключить попытки писать в него.
volatile — каждый раз при обращении проходить по адресу и брать данные , а не кэшировать.
Если какая-то ячейка в памяти (в данном случае по адресу 0x30) меняется другим потоком или, например, железом, она volatile.
Лучше было бы писать
const volatile char* const port = (const volatile char *) 0x30;

Ещё лучше (Си++11 и непортабельно)
constexpr const volatile char *port = (const volatile char *) 0x30;

А ещё лучше сделал Паскаль
var
  SomePort : byte absolute $30;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы