C6269

Actualización: noviembre 2007

C6269

Advertencia C6269: Puede que el orden de operaciones sea incorrecto: se omitió la eliminación de la referencia

Esta advertencia indica que se obvia el resultado de la eliminación de referencias de un puntero, lo que conduce a preguntarse por qué se eliminan las referencias del puntero.

El compilador optimizará correctamente la eliminación de referencias 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 eliminación de referencias; 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 ...
}