Compartir a través de


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 ...
}