를 사용하여 추가 코드 정보를 지정하는 방법 _Analysis_assume_
C/C++ 코드에 대한 코드 분석 도구에 힌트를 제공하여 분석을 처리하고 경고를 줄일 수 있습니다. 추가 정보를 제공하려면 다음 함수 매크로를 사용합니다.
_Analysis_assume_( expr )
expr
- true로 계산되는 모든 식입니다.
코드 분석 도구는 함수가 나타나는 지점에서 식 expr
이 나타내는 조건이 true라고 가정합니다. 예를 들어 변수에 할당하여 변경될 때까지 expr
true로 유지됩니다.
참고 항목
_Analysis_assume_
는 코드 최적화에 영향을 주지 않습니다. 코드 분석 도구 _Analysis_assume_
외부에서 no-op으로 정의됩니다.
예시
다음 코드는 코드 분석 경고 C6388을 수정하는 데 사용합니다_Analysis_assume_
.
#include <windows.h>
#include <sal.h>
// Requires pc to be null.
void f(_Pre_null_ char* pc);
// Calls free and sets ch to null.
void FreeAndNull(char** ch);
void test()
{
char* pc = (char*)malloc(5);
FreeAndNull(&pc);
_Analysis_assume_(pc == NULL);
f(pc);
}
_Analysis_assume_
는 최후의 수단으로 사용해야 합니다. 먼저 함수의 계약을 보다 정확하게 만들려고 노력해야 합니다. 이 경우 다음을 사용하는 대신 계약을 FreeAndNull
개선할 수 있습니다 _Analysis_assume_
.
#include <windows.h>
#include <sal.h>
// Requires pc to be null.
void f(_Pre_null_ char* pc);
// Calls free and sets ch to null.
_At_(*ch, _Post_null_)
void FreeAndNull(char** ch);
void test()
{
char* pc = (char*)malloc(5);
FreeAndNull(&pc);
f(pc);
}