Freigeben über


Warnung C6269

Mögliche falsche Reihenfolge von Vorgängen: Dereference ignoriert

Diese Warnung weist darauf hin, dass das Ergebnis einer Zeigereinleitung ignoriert wird, was die Frage aufwirft, warum der Zeiger an erster Stelle abgeleitet wird.

Hinweise

Der Compiler optimiert die überflüssige Ableitung ordnungsgemäß. In einigen Fällen kann dieser Fehler jedoch einen Rang- oder Logikfehler widerspiegeln.

Eine häufige Ursache für diesen Fehler ist eine Ausdrucksanweisung des Formulars:

*p++;

Wenn die Absicht dieser Anweisung lediglich das Inkrementieren des Zeigers pist, ist die Ableitung unnötig. Wenn die Absicht jedoch besteht, die Stelle p zu erhöhen, auf die zeigt, verhält sich das Programm nicht wie beabsichtigt, da p++ das Konstrukt anstelle (p++) von (*p)++.

Codeanalysename: POINTER_DEREF_DISCARDED

Beispiel

Der folgende Code generiert diese Warnung:

#include <windows.h>

void f( int *p )
{
  // code ...
  if( p != NULL )
    *p++;
  // code ...
}

Verwenden Sie zum Korrigieren dieser Warnung Klammern, wie im folgenden Code gezeigt:

#include <windows.h>

void f( int *p )
{
  // code ...
  if( p != NULL )
    (*p)++;
  // code ...
}