Udostępnij za pośrednictwem


Jak: Określ dodatkowe informacje o kodzie za pomocą __analysis_assume

Możesz dostarczyć podpowiedzi dla narzędzia analizy kodu języka C/C++, które pomogą w procesie analizy i zmniejszą liczbę ostrzeżeń.Aby dostarczyć dodatkowe informacje, użyj poniższych funkcji:

__analysis_assume(expr)

expr - dowolne wyrażenie, za którego wartość oszacowaną przyjmuje się prawdę.

Narzędzie analizy kodu przyjmuje, że warunek reprezentowany przez wyrażenie jest prawdziwy w punkcie, w którym pojawiła się funkcja i pozostaje prawdziwy, dopóki wyrażenie nie zostanie zmienione, na przykład przez przypisanie do zmiennej.

[!UWAGA]

Funkcja __analysis_assume nie ma wpływu na optymalizację kodu.Poza narzędziem analizy kodu, funkcja __analysis_assume jest zdefiniowana jako funkcja, która nie wykonuje żadnych operacji.

Przykład

Poniższy kod wykorzystuje __analysis_assume do poprawienia ostrzeżeń analizy kodu C6388:

#include<windows.h>
#include<codeanalysis\sourceannotations.h>

using namespace vc_attributes;

// calls free and sets ch to null
void FreeAndNull(char* ch);

//requires pc to be null
void f([Pre(Null=Yes)] char* pc);

void test( )
{
  char *pc = (char*)malloc(5);
  FreeAndNull(pc);
  __analysis_assume(pc == NULL); 
  f(pc);
}

Zobacz też

Inne zasoby

__assume