C28193
警告的 C28193:变量表示必须检查的值
此警告意味着调用函数不检查指定的变量的值,功能提供。 返回的值说明与 _Check_return_ 批注,但是,调用函数不使用值或重写该值,而不签出。
此警告与警告 C6031,但是,报告,只有 + 当代码不测试也不检查变量的值时,使用它在比较,如。 将值不被视为避免此警告的一种足够的物理。 失真在函数之外的结果被视为一个足够的物理,但是,应注意个结果与 _Check_return_。
某些功能 (例如 strlen) 为它们几乎返回值,因此,它具有自己的意义可以具有 _Check_return_ 批注。 这些功能,那么,当返回值不使用的情况下,代码分析工具可能报告此警告。 这通常表示代码是不正确的,例如,它可能包含能删除的剩余的代码。 但是,在某些少见实例,返回值特意不使用。 最常见的这些实例是字符串长度返回的位置,但并不真正使用,在某些其他测试之前进行。 其他测试中会导致模拟的路径长度字符串结尾引发未使用的位置。 发生这种情况时,代码可以是正确的,但是,可能是低效的。
具有过程的两种主要方法返回值是未使用的这些情况:
重新排序代码,以便字符串长度沿它需要的路径仅返回。
使用警告的 #pragma 禁止显示警告--如果通过重新排序代码,则会使代码太复杂或用处不大。
示例
下面的代码示例生成此警告:
IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...
下面的代码示例避免此警告:
IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...
if (nMapRegs < MIN_REQUIRED_MAPS) {
...
}