Поделиться через


C6269

Обновлен: Ноябрь 2007

C6269

Предупреждение C6269. Возможно, неверный порядок операций: разыменование игнорируется

Данное предупреждение указывает, что результат разыменования указателя пропускается, однако возникает вопрос, почему разыменование указателя выполняется в первую очередь.

Компилятор корректно оптимизирует неуместное разыменование. Однако в некоторых случаях данный дефект может являться следствием ошибки приоритета или логики.

Одной из распространенных причин данного дефекта является оператор в форме:

*p++;

Если в результате данного оператора предполагалось просто увеличить указатель p, разыменование не требуется; однако если предполагалось увеличить расположение, на которое указывает p, то программа не будет вести ожидаемым образом, поскольку конструкция *p++ интерпретируется как * (p++), а не как (*p)++.

Пример

Данное предупреждение создается в следующем коде:

#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 ...
}