Fonctions intrinsèques

Une expression dans SAL peut être une expression C/C++ fournie qu’il s’agit d’une expression qui n’a pas d’effets secondaires( par exemple, ++, --, et les appels de fonction ont tous des effets secondaires dans ce contexte. Toutefois, SAL fournit des objets de type fonction et des symboles réservés qui peuvent être utilisés dans les expressions SAL. Ces fonctions sont appelées fonctions intrinsèques.

Usage général

Les annotations de fonction instrinsique suivantes fournissent un utilitaire général pour SAL.

Annotation Description
_Curr_ Synonyme de l’objet actuellement annoté. Lorsque l’annotation _At_ est en cours d’utilisation, _Curr_ est identique au premier paramètre à _At_. Sinon, il s’agit du paramètre ou de la valeur de retour/fonction entière avec laquelle l’annotation est associée lexicalement.
_Inexpressible_(expr) Exprime une situation où la taille d’une mémoire tampon est trop complexe à représenter à l’aide d’une expression d’annotation, par exemple lorsqu’elle est calculée en analysant un jeu de données d’entrée, puis en comptant les membres sélectionnés.
_Nullterm_length_(param) param est le nombre d’éléments dans la mémoire tampon jusqu’à ce qu’ils n’incluent pas un terminateur Null. Elle peut être appliquée à n’importe quelle mémoire tampon de type non agrégé, non void.
_Old_(expr) Lorsqu’elle est évaluée en condition préalable, _Old_ retourne la valeur exprd’entrée . Lorsqu’elle est évaluée après condition, elle retourne la valeur expr telle qu’elle aurait été évaluée en condition préalable.
_Param_(n) Le nième paramètre d’une fonction, comptant de 1 à n, est n une constante intégrale littérale. Si le paramètre est nommé, cette annotation est identique à l’accès au paramètre par nom. Remarque :n peut faire référence aux paramètres positionnels définis par des points de suspension ou être utilisés dans les prototypes de fonction où les noms ne sont pas utilisés.
return Le mot clé return réservé C/C++ peut être utilisé dans une expression SAL pour indiquer la valeur de retour d’une fonction. La valeur est disponible uniquement dans l’état post- ; il s’agit d’une erreur de syntaxe pour l’utiliser dans un état antérieur.

Spécifique à la chaîne

Les annotations de fonction intrinsèques suivantes permettent la manipulation de chaînes. Les quatre fonctions suivantes servent le même objectif : pour renvoyer le nombre d’éléments du type trouvé avant un terminateur Null. Les différences sont les types de données dans les éléments auxquels il est fait référence. Notez que si vous souhaitez spécifier la longueur d’une mémoire tampon terminée par null qui n’est pas composée de caractères, utilisez l’annotation _Nullterm_length_(param) de la section précédente.

Annotation Description
_String_length_(param) param est le nombre d’éléments de la chaîne jusqu’à ce qu’il n’inclue pas un terminateur Null. Cette annotation est réservée aux types chaîne de caractères.
strlen(param) param est le nombre d’éléments de la chaîne jusqu’à ce qu’il n’inclue pas un terminateur Null. Cette annotation est réservée pour une utilisation sur les tableaux de caractères et ressemble à la fonction C Runtime strlen().
wcslen(param) param est le nombre d’éléments de la chaîne jusqu’à (mais pas inclus) d’un terminateur Null. Cette annotation est réservée à une utilisation sur des tableaux de caractères larges et ressemble à la fonction C Runtime wcslen().

Voir aussi