Я вижу практическое применение для квалифицированной переменной const volatile
, например
const volatile uint64_t seconds_since_1970;
если базовый аппаратный механизм обновляет значение каждую секунду, но переменная недоступна для записи в (возможно, встроенном) оборудовании.
И поскольку все три (четыре в C11) квалификатора типа считаются независимыми, все комбинации, по-видимому, разрешены. Но я в недоумении представляю себе реальную ситуацию, когда квалифицированный указатель restrict volatile
действительно имеет смысл:
uint32_t * restrict volatile pointer_to_some_uint32;
[РЕДАКТИРОВАТЬ: Чтобы уточнить: volatile
и restrict
применяются к указателю, а не к объекту, на который указывает!]
Это конструкция, разрешенная языком, но бесполезная сама по себе, или я упускаю область приложения, где это может быть полезным?