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
Concetti
Altre risorse
Utilizzo delle annotazioni SAL per ridurre gli errori del codice C/C++