C6269
Aggiornamento: novembre 2007
C6269
avviso C6269: possibile ordine errato delle operazioni: risoluzione del riferimento ignorata
L'avviso indica che il risultato di una risoluzione del riferimento del puntatore è ignorato, pertanto ci si chiede perché il riferimento del puntatore venga risolto nella prima posizione.
Il compilatore ottimizzerà correttamente la risoluzione del riferimento 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 tale istruzione è semplicemente di incrementare il puntatore p, la risoluzione del riferimento non è necessaria. Se lo scopo, invece, è 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++) invece di (*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 ...
}