Переменный спецификатор потерян во время преобразования
Этот дефект происходит во время преобразования указателя, когда один указатель имеет спецификатор, и другой не делает. Например, при преобразовании от 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 |