Предупреждение C6269
Возможный неправильный порядок операций: разыменовка игнорируется
Это предупреждение указывает на то, что результат разыменования указателя игнорируется, что вызывает вопрос о том, почему указатель разыменовываются в первую очередь.
Замечания
Компилятор правильно оптимизирует разыменовку. Однако в некоторых случаях этот дефект может отражать приоритет или ошибку логики.
Одной из распространенных причин этого дефекта является выражение формы:
*p++;
Если цель этого оператора — просто увеличить указатель p
, то деконференция не требуется. Однако если намерение состоит в том, чтобы увеличить расположение p
, указывающее на это, программа не будет вести себя как предназначенная, так как p++
конструкция интерпретируется как (p++)
не (*p)++
так.
Имя анализа кода: POINTER_DEREF_DISCARDED
Пример
Следующий код создает это предупреждение:
#include <windows.h>
void f( int *p )
{
// code ...
if( p != NULL )
*p++;
// code ...
}
Чтобы исправить это предупреждение, используйте скобки, как показано в следующем коде:
#include <windows.h>
void f( int *p )
{
// code ...
if( p != NULL )
(*p)++;
// code ...
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по