Condividi tramite


Funzioni intrinseche

Un'espressione in SAL può essere un'espressione C/C++ a condizione che sia un'espressione che non ha effetti collaterali— ad esempio, ++, -- e le chiamate di funzione tutte hanno effetti collaterali in questo contesto. Tuttavia, SAL fornisce alcuni oggetti del tipo di funzione e alcuni simboli privati che possono essere utilizzati nelle espressioni SAL.Esse sono denominate funzioni intrinseche.

Utilizzo generale

Le annotazioni intrinseche di funzione forniscono l'utilità generale per l'utilizzo di SAL.

Annotazione

Descrizione

_Curr_

Sinonimo dell'oggetto attualmente annotato. Quando viene utilizzata l'annotazione _At_, _Curr_ è identica al primo parametro di _At_. In caso contrario, è il parametro o l'intera funzione/valore restituito con cui l'annotazione è lessicalmente associata.

_Inexpressible_(expr)

Esprime una situazione in cui la dimensione di un buffer è troppo complessa per essere rappresentata con un'espressione di annotazione, ad esempio quando viene calcolata esaminando un set di dati di input e successivamente contando i membri selezionati.

_Nullterm_length_(param)

param è il numero di elementi nel buffer fino a un terminatore null, non incluso.Può essere applicato a un qualsiasi buffer che contenga tipi non aggregati e non void.

_Old_(expr)

Una volta valutato nella precondizione, _Old_ restituisce il valore di input expr. Una volta valutato nella post condizione, restituisce il valore expr come sarebbe stato valutato nella precondizione

_Param_(n)

Il parametro n-esimo di una funzione, contando da 1 a n, e n è una costante integrale letterale.Se il parametro è denominato, questa annotazione ha lo stesso effetto di accedere al parametro per nome.

[!NOTA]

n può fare riferimento ai parametri posizionali definiti dai puntini di sospensione, oppure potrebbe essere utilizzato in prototipi di funzioni in cui i nomi non vengono utilizzati.

return

La parola chiave riservata return di C/C++ può essere utilizzata in un'espressione SAL per indicare il valore restituito di una funzione. Il valore è disponibile solo nello stato di post; è un errore di sintassi utilizzarlo in uno stato di pre.

Specifico di una stringa

Le seguenti annotazioni di funzione intrinseca abilitano la modifica delle stringhe.Tutte e quattro queste funzioni presentano lo stesso scopo: per restituire il numero di elementi del tipo trovato prima di un terminatore null.Le differenze sono i tipi di dati negli elementi a cui fanno riferimento.Si noti che se si desidera specificare la lunghezza del buffer con terminazione null che non è composto da caratteri, utilizzare l'annotazione di _Nullterm_length_(param) dalla sezione precedente.

Annotazione

Descrizione

_String_length_(param)

param è il numero di elementi nella stringa fino a un terminatore null, non incluso.Questa voce è riservata per i tipi di carattere stringa-di-caratteri.

strlen(param)

param è il numero di elementi nella stringa fino a un terminatore null, non incluso.Questa annotazione è riservata all'utilizzo sugli array di caratteri ed è similare alla funzione runtime del C strlen().

wcslen(param)

param è il numero di elementi nella stringa fino a un terminatore null, non incluso.Questa annotazione è riservata all'utilizzo sugli array di caratteri wide ed è similare alla funzione runtime del C wcslen().

Vedere anche

Riferimenti

Annotazione di parametri di funzione e valori restituiti

Annotazione del comportamento delle funzioni

Annotazioni di struct e classi

Annotazione del comportamento di blocco

Specificare dove e quando applicare un'annotazione

Suggerimenti ed esempi (SAL)

Concetti

Informazioni su SAL

Altre risorse

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