C6269
avviso C6269: possibile ordine errato delle operazioni: dereferenziazione ignorata
L'avviso indica che il risultato di una dereferenziazione del puntatore è ignorato, pertanto ci si chiede perché la dereferenziazione del puntatore avvenga nella prima posizione.
Il compilatore ottimizzerà correttamente la dereferenziazione ingiustificata.In alcuni casi, tuttavia, l'errore può sottintendere un errore di precedenza o di logica.
Una causa diffusa per questo errore è un'istruzione di espressione nel formato:
*p++;
Se lo scopo di questa istruzione è semplicemente di incrementare il puntatore p, la dereferenziazione non è necessaria. Se lo scopo, invece, è di incrementare la posizione a cui fa riferimento p, il comportamento del programma non sarà quello previsto, in quanto il costrutto *p++ verrà interpretato come * (p++)anziché (*p)++.
Esempio
Il codice seguente genera questo avviso:
#include <windows.h>
void f( int *p )
{
// code ...
if( p != NULL )
*p++;
// code ...
}
Per risolvere il problema, utilizzare le parentesi come riportato nel codice seguente:
#include <windows.h>
void f( int *p )
{
// code ...
if( p != NULL )
(*p)++;
// code ...
}