C28193
警告 C28193:该变量保留了一个必须检查的值
此警告意味着调用函数不检查由另一个函数提供的指定的变量的值。返回值使用 _Check_return_ 注释注解,但调用函数或者不使用此值或者覆盖此值,而不检查它。
此警告类似于 C6031警告,但是,只有当代码不测试或检查变量的值时如在比较时使用它,它才报告。简单赋值不被视为避免此警告的一种足够的测试。混淆此函数出来的结果被视为一种足够的尝试,但应使用 _Check_return_ 注解结果。
某些函数 (如 strlen) 的存在只为他们的返回值,因此它们使用 _Check_return_ 注释会有意义。这些函数中,当返回值未用时代码分析工具可能报告此警告。这通常表明代码是不正确,例如,它可能包含可能被删除的剩余代码。但是,在某些少见实例中,返回值故意不被使用。最常见的这些实例为返回字符串长度但实际上在一些其他测试之前不适用的实例。其他测试将导致模拟路径的字符串长度最终被闲置发生这种情况时,代码都是正确的,但可能是低效的。
有两个主要策略处理返回值未使用的这些情况:
重新排序代码,以便字符串长度只在它需要时返回。
使用 #pragma 警告抑制此警告--如果通过重新排序代码,则会使代码更复杂或更无用。
示例
下面的代码示例生成此警告:
IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...
下面的代码示例避免此警告:
IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...
if (nMapRegs < MIN_REQUIRED_MAPS) {
...
}