Sdílet prostřednictvím


C6269

upozornění C6269: možné nesprávné pořadí operací: ignorováno zrušení reference

Toto upozornění indikuje, že výsledek přístupu přes ukazatel je ignorován, což vyvolává otázku, proč je vlastně použito přístupu přes ukazatel.

Kompilátor bude správně optimalizovat bezdůvodné dereference.V některých případech však tato vada může odrážet prioritu nebo logickou chybu.

Obvyklou příčinou této vady je výraz ve formuláři:

*p++;

Pokud záměr tohoto prohlášení je jednoduše zvýšit ukazatel p, pak vyhodnotit odkazy je zbytečné; Nicméně pokud je třeba zvýšit umístění, p ukazuje, pak program nebude chovat tak, jak má, protože * p ++ konstrukce je interpretována jako * (p++). místo (*p)++.

Příklad

Následující kód generuje toto upozornění:

#include <windows.h>

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

Chcete-li opravit toto upozornění, použijte závorky tak, jak je ukázáno v následujícím kódu:

#include <windows.h>

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