C6269
Advertencia C6269: Puede que el orden de operaciones sea incorrecto: se omitió la desreferenciación
Esta advertencia indica que se obvia el resultado de la desreferenciación de un puntero, lo que conduce a preguntarse por qué se desreferencia el puntero en primer lugar.
El compilador optimizará correctamente la desreferenciación injustificada.Sin embargo, en algunos casos, este defecto puede reflejar un error de prioridad o de lógica.
Una causa común de este defecto es una instrucción de expresión de la forma:
*p++;
Si la intención de esta instrucción no es más que la de incrementar el puntero p, entonces es innecesaria la desreferenciación; sin embargo, si la intención es incrementar la ubicación a la que señala p, entonces el programa no se comportará de la forma esperada porque la construcción *p++ se interpretará como * (p++),en lugar de como (*p)++.
Ejemplo
El código siguiente genera esta advertencia:
#include <windows.h>
void f( int *p )
{
// code ...
if( p != NULL )
*p++;
// code ...
}
Para corregir esta advertencia, utilice paréntesis como se muestra en el código siguiente:
#include <windows.h>
void f( int *p )
{
// code ...
if( p != NULL )
(*p)++;
// code ...
}