Freigeben über


Gewusst wie: Angeben zusätzlicher Codeinformationen mit __analysis_assume

Sie können dem Codeanalysetool für C/C++-Code Hinweise zur Verfügung stellen, durch die der Analyseprozess unterstützt und Warnungen reduziert werden. Um zusätzliche Informationen bereitzustellen, verwenden Sie die folgende Funktion:

__analysis_assume(expr)

expr – beliebiger Ausdruck, von dem angenommen wird, dass er true ergibt.

Das Codeanalysetool geht davon aus, dass die durch den Ausdruck angegebene Bedingung an dem Punkt, an dem die Funktion auftritt, true ergibt und so lange gültig bleibt, bis der Ausdruck, beispielsweise durch die Zuweisung zu einer Variablen, geändert wird.

Tipp

__analysis_assume hat keine Auswirkungen auf die Codeoptimierung. Außerhalb des Codeanalysetools wird durch __analysis_assume keine Aktion ausgeführt.

Beispiel

Im folgenden Code wird __analysis_assume verwendet, um die Codeanalysewarnung C6388 zu korrigieren:

#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);
}

Siehe auch

Referenz

__assume