Fonctions intrinsèques

Une expression dans SAL peut être une expression C/C++ pourvu qu’il s’agisse d’une expression qui n’a pas d’effets secondaires (par exemple, ++, --). Or, 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. Il s’agit de fonctions intrinsèques.

Usage général

Les annotations de fonction intrinsèque suivantes fournissent une utilité générale 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’à un terminateur null (sans l’inclure). Il peut être appliqué à n’importe quelle mémoire tampon de type non agrégé, non vide.
_Old_(expr) Lorsqu’il est évalué en condition préalable, _Old_ retourne la valeur d’entrée expr. Lorsqu’il est évalué après condition, il 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, en comptant de 1 à n, et n est 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é réservé C/C++ return 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érieur. Son utilisation dans un état antérieur constitue une erreur de syntaxe.

Spécifique à la chaîne

Les annotations de fonction intrinsèques suivante permettent la manipulation de chaînes. Les quatre fonctions suivantes servent le même objectif : renvoyer le nombre d’éléments du type trouvé avant un terminateur null. Elles diffèrent par 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’à un terminateur null (sans l’inclure). 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’à un terminateur null (sans l’inclure). 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’à un terminateur null (sans l’inclure). Cette annotation est réservée à une utilisation sur des tableaux de caractères larges et ressemble à la fonction C Runtime wcslen().

Voir aussi