Partager via


C6269

avertissement C6269 : ordre des opérations peut-être incorrect : déréférencement ignoré

Cet avertissement indique que le résultat d'un déréférencement de pointeur est ignoré, ce qui déclenche la question concernant la raison pour laquelle le pointeur est déréférencé en premier.

Le compilateur optimise correctement le déréférencement gratuit. Dans certains cas, toutefois, ce défaut peut refléter une priorité ou une erreur de logique.

Ce défaut est généralement dû à une instruction d'expression du formulaire :

*p++;

Si cette instruction vise simplement à incrémenter le pointeur p, le déréférencement est inutile ; toutefois, si elle vise à incrémenter l'emplacement vers lequel p pointe, le programme ne se comporte pas comme prévu car la construction *p++ est interprétée comme * (p++) plutôt que (*p)++.

Exemple

Le code suivant génère cet avertissement :

#include <windows.h>

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

Pour corriger cet avertissement, utilisez des parenthèses comme indiqué dans le code suivant :

#include <windows.h>

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