Condividi tramite


Annotazione del comportamento delle funzioni

Oltre alla parametri di funzione e valori restituiti, è possibile annotare le proprietà della funzione intera.

Annotazioni di funzione

Le annotazioni si applicano alla funzione corrente e viene descritto come funziona o quello previsto per essere true.

Annotazione

Descrizione

_Called_from_function_class_(name)

Non si consiglia di prestare da solo, invece, è un predicato da utilizzare con l'annotazione di _When_.Per ulteriori informazioni, vedere Specificare dove e quando applicare un'annotazione.

Il parametro di name è una stringa arbitraria che appare in un'annotazione di _Function_class_ nella dichiarazione di funzioni. _Called_from_function_class_ restituisce diverso da zero se la funzione attualmente in analizzanda viene annotata con _Function_class_ con lo stesso valore di name; in caso contrario, restituisce zero.

_Check_return_

Annota un valore restituito e condizioni che il chiamante deve aver.Il verificatore viene segnalato un errore se la funzione viene chiamata in un contesto void.

_Function_class_(name)

Il parametro di name è una stringa arbitraria definita dall'utente.Esiste in uno spazio dei nomi che si differenzia da altri spazi dei nomi.Una funzione, un puntatore a funzione, o) in un tipo puntatore a funzione di usefully-a possono essere definiti come appartenenti a una o più classi di funzione.

_Raises_SEH_exception_

L'annotazione di una funzione che genera sempre un'eccezione strutturata di (SEH) del gestore eccezioni ma _When_ e stati di _On_failure_.Per ulteriori informazioni, vedere Specificare dove e quando applicare un'annotazione.

_Maybe_raises_SEH_exception_

L'annotazione di una funzione che è possibile generarla eccezione ma _When_ e stati di _On_failure_.

_Must_inspect_result_

Annota un qualsiasi valore di output, compreso il valore restituito, i parametri e i globals.L'analizzatore segnala un errore se il valore dell'oggetto annotato avanti non è selezionato. L'ispezione" include se utilizzata in un'espressione condizionale, viene assegnata a un parametro di output o globale, o passata come parametro.Per i valori restituiti, _Must_inspect_result_ implica _Check_return_.

_Use_decl_annotations_

Può essere utilizzato in una definizione di funzione (nota anche come corpo della funzione) anziché l'elenco delle annotazioni nell'intestazione. Quando _Use_decl_annotations_ viene utilizzato, le annotazioni visualizzati su un'intestazione nell'ambito per le funzioni utilizzate come se fossero inoltre presenti nella definizione con l'annotazione di _Use_decl_annotations_.

Annotazioni di successo o errore

Una funzione può non riuscire e quando è, i risultati possono essere incompleti o differire dai risultati quando la funzione ha esito positivo.Le annotazioni nell'elenco seguente forniscono le modalità per esprimere il comportamento dell'errore.Per utilizzare queste annotazioni, è necessario consentire loro di determinare l'esito positivo; pertanto, un'annotazione di _Success_ è necessaria.Si noti che NTSTATUS e HRESULT già dispongono di un'annotazione di _Success_ compilata in esse; tuttavia, se si specifica una voce di _Success_ su NTSTATUS o su HRESULT, esegue l'override dell'annotazione incorporata.

Annotazione

Descrizione

_Always_(anno_list)

Equivalente a anno_list _On_failure_(anno_list); ovvero le annotazioni in anno_list si applicano indipendentemente dalla funzione ha esito positivo.

_On_failure_(anno_list)

Per essere utilizzato solo quando _Success_ viene utilizzato per annotare il qualsiasi funzione in modo esplicito, o in modo implicito con _Return_type_success_ su un typedef.Quando la voce di _On_failure_ è presente in un parametro di funzione o un valore restituito, ciascuna voce in anno_list (anno) si comporta come se fosse codificato come _When_(!expr, anno), dove expr è il parametro annotazione richiesta di _Success_.Ciò significa che l'applicazione implicita di _Success_ a tutte le postcondizioni condizioni non viene applicata a _On_failure_.

_Return_type_success_(expr)

È possibile applicare a un typedef.Indica che tutte le funzioni che restituiscono quel tipo e non hanno _Success_ sono contrassegnate come se sono necessarie _Success_(expr)._Return_type_success_ non può essere utilizzato su una funzione o un typedef il puntatore a funzione.

_Success_(expr)

expr è un'espressione che produce un valore rvalue.Quando la voce di _Success_ è presente in una dichiarazione di funzione o una definizione, ciascuna voceanno() nella funzione e la prospettiva condizione si comporta come se fosse codificata come _When_(expr, anno).L'annotazione di _Success_ può essere utilizzata solo su una funzione, non i relativi parametri e tipo restituito.Potrebbe contenere al massimo un'annotazione di _Success_ su una funzione e non può essere in un _When_, in _At_, o in _Group_.Per ulteriori informazioni, vedere Specificare dove e quando applicare un'annotazione.

Vedere anche

Riferimenti

Annotazione di parametri di funzione e valori restituiti

Annotazioni di struct e classi

Annotazione del comportamento di blocco

Specificare dove e quando applicare un'annotazione

Funzioni intrinseche

Suggerimenti ed esempi (SAL)

Concetti

Informazioni su SAL

Altre risorse

Utilizzo delle annotazioni SAL per ridurre gli errori del codice C/C++