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