다음을 통해 공유


C28193

경고 C28193: 검사 해야 하는 값을 변수에

이 경고는 호출 하는 함수 지정 된 변수는 함수에 의해 제공 된 값을 확인 하지 않는 나타냅니다.반환 되는 값에 주석이 지정 되어 있는 _Check_return_ 주석, 하지만 호출 하는 함수 값은 사용 하 고 나이 검사 하지 않고 값을 덮어씁니다.

이 경고는 경고와 유사한 것 C6031, 하지만 코드를 테스트 하거나 하지 비교에 사용 하 여 같은 변수의 값을 검사 하는 경우 보고 합니다.값을 할당 하기만 하면이 경고가 발생 하지 않도록 하는 충분 한 검사를 수 간주 되지 않습니다.충분 한 검사를 앨리어싱 결과 함수 외부로 간주 됩니다 있지만 결과 자체에 주석이 지정 해야 _Check_return_.

특정 기능 (같은 strlen)에 게 적합 하도록 해당 반환 값에 대 한 거의 존재는 _Check_return_ 주석.반환 값은 사용 하지 않을 때 이러한 함수를이 경고 코드 분석 도구를 보고할 수 있습니다.일반적으로 나타냅니다 코드는 잘못 된, 예를 들어,이 삭제 하지 못했습니다 잔차 코드를 포함할 수 있습니다.그러나 드문 경우에 따라서는 반환 값 사용 됩니다 의도적으로 않습니다.이러한 경우의 가장 일반적인 문자열 길이 반환 했지만 몇 가지 다른 테스트를 수행 하기 전에 실제로 사용입니다.다른 테스트 문자열 길이 사용 하지 않는 위로 끝나는 시뮬레이션할 수 경로 인해 발생 합니다.이 오류가 발생 하면 코드가 잘못 될 수 있습니다 있지만 효율적 되지 않을 수 있습니다.

반환 값 사용 되지 않는 이러한 경우를 처리 하기 위한 기본 전략을 두 가지 있습니다.

문자열 길이 경로 따라 필요한 위치 반환 되도록 코드를 다시 정렬할.

사용 된 #pragma 코드를 재정렬 하 여 사용자 코드 너무 복잡 하거나 그렇지 않으면 그다지 유용 하는 것은-경고를 경고 합니다.

예제

다음 코드 예제에서는이 경고가 생성 됩니다.

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

다음 코드 예제에서는이 경고가 표시 되지 않습니다.

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