次の方法で共有


C28193

警告 C28193: 変数が確認する必要のある値を保持します。

この警告は、呼び出し元の関数によって提供された、指定した変数の値を確認しないことを示します。戻り値は _Check_return_ のコメントが指定されますが、呼び出し元の関数は、値を使用しない、またはそれを調べない限り、値を上書きしています。

この警告は、警告 C6031のに似ていますが、コードは、変数の値をテストして、確認しない場合にのみ比較で使用するなど、報告されます。値を単純に再配置この警告を回避するための十分なチェックとは見なされません。エイリアシングで、関数の結果十分なチェックと見なされます、結果自体は _Check_return_が指定されている必要があります。

指定された関数は値を返すため、それに strlen (など) です。これらの意味を _Check_return_ のコメントを持つほとんど排他的です。これらの関数に対して、コード分析ツールは、戻り値が不要な場合は、この警告を報告する場合があります。これは通常、たとえば削除できる他コードを含む可能性をコードが正しくないことを示します。ただし、まれなインスタンスで、戻り値は意図的には使用されません。これらのインスタンスは、他の共通のテストを実行する前に文字列の長さがを返すが、実際に使用します。他のテストは、文字列の長さが未使用の発生を終了位置のパスをシミュレートします。この場合、コードが正しい場合があります。これは非効率的である場合があります。

戻り値が未使用のこれらのケースを処理することの主に次の 2 とおりの方法があります:

文字列の長さだけが必要なパスに沿って返すように、コードの順序を変更します。

警告を抑制するには警告する #pragma を使用します。--コードを並べ替えることによって、コードが複雑すぎるか、別の方法では不便にします。

使用例

次のコード例に、この警告が生成されます:

IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...

次のコード例では、この警告を回避できます:

IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...
if (nMapRegs < MIN_REQUIRED_MAPS) {
...
}