Funzioni intrinseche
Un'espressione in SAL può essere un'espressione C/C++ a condizione che sia un'espressione che non produca effetti collaterali, ad esempio ++, -- e le chiamate di funzione hanno effetti collaterali in questo contesto. Tuttavia, SAL fornisce alcuni oggetti simili a funzioni e alcuni simboli riservati che possono essere usati nelle espressioni SAL. Queste funzioni sono definite funzioni intrinseche.
Utilizzo generico
Le seguenti annotazioni di funzioni intrinseche forniscono l'utilità generale per 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 ma non include un carattere di terminazione Null. Può essere applicato a qualsiasi buffer di tipo non aggregato 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 n parametro th di una funzione, contando da 1 a n ed n è una costante integrale letterale. Se il parametro è denominato, questa annotazione è identica all'accesso al parametro in base al nome. Nota: n può fare riferimento ai parametri posizionali definiti da puntini di sospensione oppure possono essere usati nei prototipi di funzione in cui i nomi non vengono usati. |
return |
La parola chiave return riservata C/C++ può essere usata 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. |
Specifica della stringa
Le seguenti annotazioni di funzioni intrinseche abilitano la modifica delle stringhe. Tutte e quattro queste funzioni presentano lo stesso scopo: restituire il numero di elementi del tipo trovati 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 ma non include un carattere di terminazione Null. Questa annotazione è riservata ai tipi stringa di caratteri. |
strlen(param) |
param è il numero di elementi nella stringa fino a ma non include un carattere di terminazione Null. Questa annotazione è riservata per l'uso su matrici di caratteri e assomiglia alla funzione di runtime C strlen().This annotation is reserved for use on character arrays and resembles the C Runtime function strlen(). |
wcslen(param) |
param è il numero di elementi nella stringa fino a (ma non incluso) un carattere di terminazione Null. Questa annotazione è riservata per l'uso su matrici di caratteri wide e assomiglia alla funzione di runtime C wcslen().This annotation is reserved for use on wide character arrays and resembles the C Runtime function wcslen(). |
Vedi anche
- Uso delle annotazioni SAL per ridurre gli errori del codice C/C++
- Informazioni su SAL
- 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