Предупреждение 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 ...
}