Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Come specificare informazioni aggiuntive sul codice tramite
È possibile fornire suggerimenti allo strumento di analisi del codice per il codice C/C++ che consente di elaborare l'analisi e ridurre gli avvisi. Per fornire informazioni aggiuntive, utilizzare la macro di funzione seguente:
_Analysis_assume_( expr )
expr - qualsiasi espressione che si presuppone restituisca true.
Lo strumento di analisi del codice presuppone che la condizione rappresentata dall'espressione expr sia true nel punto in cui viene visualizzata la funzione. E rimane true fino a quando expr non viene modificato, ad esempio, assegnando a una variabile.
Nota
_Analysis_assume_ non influisce sull'ottimizzazione del codice. All'esterno dello strumento di analisi del codice, _Analysis_assume_ è definito come no-op.
Esempio
Il codice seguente usa _Analysis_assume_ per correggere l'avviso di analisi del codice 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_ deve essere utilizzato come ultima risorsa. Dobbiamo prima cercare di rendere più precisi i contratti delle funzioni. In questo caso è possibile migliorare il contratto anziché FreeAndNull usare _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);
}