У меня проблема с кодом низкого уровня, который я пишу, мне нужно использовать объекты как изменчивые, но не обязательно, чтобы я хотел, чтобы типы были объявлены как изменчивые (для повторного использования). Однако я могу определить указатель на квалифицированный вариант структуры, подробно описанный в следующем сегменте.
struct x {
int bar;
};
struct x foobar;
...
volatile struct x *foo = &foobar;
Теперь foo фактически является указателем на объект типа:
volatile struct x {
volatile int x;
};
поскольку volatile применяется ко всем членам структуры. Теперь мой вопрос в том, когда объект содержит указатель на другой объект, как применяется летучесть?
struct x {
struct y *bar;
};
Будет ли указатель на неустойчивый экземпляр x затем обрабатывать это как:
volatile struct x {
struct y * volatile bar;
};
или как:
volatile struct x {
volatile struct y * volatile bar;
};
Я прочитал стандарт C, и это не очень понятно в отношении этого, и я могу легко интерпретировать формулировку несколькими способами.