를 사용하여 추가 코드 정보를 지정하는 방법 _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);
}

참고 항목