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

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

Есть адрес порта 0x30.
Что значит данное выражение? И зачем приведение адреса к такому указателю?
const volatile char *port = (const volatile char *) 0x30;
  • Вопрос задан
  • 627 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 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;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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