경고 C28196
요구 사항이 충족되지 않았습니다. (식이 true로 평가되지 않습니다.)
이 경고는 __notnull
__null
__drv_valueIs
분석 중인 함수에 매개 변수 또는 반환 값에 대한 _Out_
주석 또는 유사한 주석이 있지만 반환된 값이 해당 주석과 일치하지 않음을 나타냅니다.
설명
같은 __notnull
주석은 매개 변수 및 반환 값에 대한 _Out_
고정을 설명합니다. 이 값은 설명서와 함수 작성자의 정신 검사 역할을 합니다. 경고 C28196은 주석과 함수의 실제 동작이 일치하지 않음을 나타냅니다. 이 경고는 함수가 특정 입력 값에 대해 예기치 않게 동작할 수 있는 경우를 검색하는 데 유용할 수 있습니다. 그런 다음 작성자가 함수의 의도된 동작을 결정하고 주석 또는 구현을 적절하게 조정해야 합니다.
예제
다음 함수는 일부 코드 경로가 null 포인터를 반환하더라도 주석이 _Ret_notnull_
추가되기 때문에 경고 C28196을 발생합니다.
#include <sal.h>
_Ret_notnull_
Item *get_item(_In_reads_(len) Item *items, size_t len, size_t index) {
if (index >= len) {
return nullptr;
}
return items + index;
}
이 문제를 해결하려면 주석을 구체화하여 함수의 동작을 정확하게 반영합니다.
#include <sal.h>
_When_(index < len, _Ret_notnull_)
Item *get_item(_In_reads_(len) Item *items, size_t len, size_t index) {
if (index >= len) {
return nullptr;
}
return items + index;
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기