У меня есть поле указателя в структуре, которое указывает на связанный список экземпляров структуры.
struct myStruct {
some fields...
struct list_objects * volatile list;
}
Согласно моему пониманию, я объявляю это так, чтобы сообщить компилятору, что указатель может измениться из других потоков.так что не кешируйте его.
Изменится не то, на что указывает list
, а указатель.(иначе volatile должно быть первым ключевым словом, верно?)
Доступ к list
защищен мьютексом, поэтому потоки не сталкиваются при записи в этот указатель.
При чтении возникает проблемаадрес этого указателя в указатель на указатель.
struct list_objects **ptrToPtr = &myStructVariable->list;
Мне нужен двойной указатель, чтобы назначить другой указатель на эту переменную или пройтись по связанному списку.
Компилятор выдает «назначение отбрасываетЛетучий классификатор "Предупреждение.Я читал об этом предупреждении и думаю, что в основном понял его, но не понимаю, почему оно появляется здесь.
Адрес этой переменной никогда не должен изменяться.Содержимое изменчиво, но не место, где оно находится.
Полагаю, у меня плохое понимание этого вопроса.Пожалуйста, помогите мне разобраться с этим.