C6269

警告 C6269:运算顺序可能不正确: 取消引用被忽略

此警告意味着取消引用指针所带来的后果被忽略,这会产生一个问题,那就是为何在第一个位置取消引用指针。

编译器将正确地进行优化,以去除不必要的取消引用。 但是,在某些情况下,此缺陷可能反映出存在优先级或逻辑错误。

产生此缺陷的一个常见原因是如下形式的表达式语句:

*p++;

如果此语句的目的只是递增指针 p,则取消引用是不必要的;然而,如果此语句的目的是递增 p 所指向的位置,则程序将不会按预期方式工作,因为 *p++ 构造被解释为 * (p++), 而非 (*p)++。

示例

下面的代码生成此警告:

#include <windows.h>

void f( int *p )
{
    // code ...
  if( p != NULL )
    *p++;
    // code ...
}

若要更正此警告,请如下面的代码所示使用括号:

#include <windows.h>

void f( int *p )
{
    // code ...
  if( p != NULL )
    (*p)++;
    // code ...
}