Переменный спецификатор потерян во время преобразования
Спецификатор, удаленный в преобразовании, происходит во время преобразования указателя, когда один указатель имеет спецификатор, и другой не делает. Например, при преобразовании от const int*
до int*
, преобразование удаляет спецификатор const
.
Этот дефект применяется только для проектов в C.
Спецификаторы, такие как const
или volatile
в объявлении указателя:
const int* ptr;
const
или volatile
. Эти спецификаторы действуют как инструкции к компилятору. Например, объект const
, как предполагается, не изменяется в коде, и объект volatile
, как предполагается, не оптимизирован далеко компилятором.Если второй указатель указывает на тот же объект, но не использует тот же спецификатор, спецификатор на первом указателе больше не действителен. Например, если указатель const int*
и указатель int*
указывают на тот же объект, можно изменить объект через второй указатель и нарушить контракт, подразумеваемый спецификатором const
в первом указателе.
Если вы намереваетесь преобразовать от одного указателя до другого, объявите оба указателя с теми же спецификаторами.
Группа: Программирование |
Язык: C |
Значение по умолчанию: 'off' |
Синтаксис командной строки: QUALIFIER_MISMATCH |
Влияние: низко |
ID CWE: 704 |