为什么va_arg(va_list,type)给我C6285警告?

时间:2020-06-18 10:41:10

标签: c++ warnings variadic

一切正常,我从va_arg(va_list,type)中获得了所需的值,但是在每次调用va_arg的地方都得到了这个警告:

WP_Query

示例代码:

Warning    C6285   (<non-zero constant> || <non-zero constant>) is always a non-zero constant.  Did you intend to use the bitwise-and operator?

为什么会收到此警告,如何消除该警告?

我正在将Visual Studio Community 2019与Visual C ++ 2019一起使用

1 个答案:

答案 0 :(得分:2)

C6###错误代码是IntelliSense代码。这些都是基于试探法,旨在将注意力转移到潜在的错误上,但也可能导致假阳性,在这里似乎是这种情况。它可能是在CRT中的va_arg实现上触发的:

#define __crt_va_arg(ap, t)                                               \
    ((sizeof(t) > sizeof(__int64) || (sizeof(t) & (sizeof(t) - 1)) != 0) \  // <== Here
        ? **(t**)((ap += sizeof(__int64)) - sizeof(__int64))             \
        :  *(t* )((ap += sizeof(__int64)) - sizeof(__int64)))

我只会忽略它...

如果麻烦您,请向供应商报告:帮助发送反馈报告问题...