Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Jak zadat další informace o kódu pomocí
Můžete poskytnout rady pro nástroj pro analýzu kódu pro kód C/C++, který pomáhá procesu analýzy a omezení upozornění. Pokud chcete poskytnout další informace, použijte následující makro funkce:
_Analysis_assume_( expr )
expr – libovolný výraz, který se předpokládá jako pravdivý.
Nástroj pro analýzu kódu předpokládá, že podmínka reprezentovaná výrazem expr je pravdivá v okamžiku, kdy se funkce zobrazí. A zůstane pravdivý, dokud expr se nezmění, například přiřazením proměnné.
Poznámka:
_Analysis_assume_ nemá vliv na optimalizaci kódu. Mimo nástroj pro _Analysis_assume_ analýzu kódu je definován jako no-op.
Příklad
Následující kód slouží _Analysis_assume_ k opravě upozornění analýzy kódu C6388:
#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_ by měla být použita jako poslední možnost. Měli bychom se nejprve pokusit, aby byly kontrakty funkcí přesnější. V tomto případě bychom mohli místo použití FreeAndNullzlepšit smlouvu_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);
}