Partager via


Spécification du moment où une annotation est applicable et dans quel cas

Lorsqu'une annotation est conditionnelle, elle peut nécessiter d'autres annotations de spécifier qu'à l'analyseur.Par exemple, si une fonction a une variable qui peut être synchrone ou asynchrone, la fonction se comporte comme suit : Dans le cas synchrone elle réussit toujours par la suite, mais dans le cas asynchrone elle signale une erreur si elle ne peut pas réussir immédiatement.Lorsque la fonction est appelée de façon synchrone, le contrôle de la valeur de résultat ne fournit aucune valeur à l'analyseur de code car il ne se serait pas retourné.Toutefois, lorsque la fonction est appelée de façon asynchrone et le résultat de la fonction n'est pas contrôlé, une erreur sérieuse peut se produire.Cet exemple illustre une situation dans à laquelle vous pouvez utiliser _When_ annotation- décrit ultérieurement dans cette article- activez le contrôle.

Annotations structurelles

Pour contrôler quand et où les annotations s'appliquent, utilisez les annotations structurelles suivantes.

Annotation

Description

_At_(expr, anno-list)

expr est une expression qui référence une l-value.Les annotations dans anno-list appliquées à l'objet nommé par expr.Pour chaque annotation en anno-list, expr est interprète dans la condition préalable si l'annotation est interprétée dans la condition préalable, et dans la condition après si l'annotation est interprétée après dans la condition.

_At_buffer_(expr, iter, elem-count, anno-list)

expr est une expression qui référence une l-value.Les annotations dans anno-list appliquées à l'objet nommé par expr.Pour chaque annotation en anno-list, expr est interprète dans la condition préalable si l'annotation est interprétée dans la condition préalable, et dans la condition après si l'annotation est interprétée après dans la condition.

iter est le nom d'une variable qui est limitée à l'annotation (y compris anno-list).iter a un type implicite long.Les variables de manière identique nommées dans une portée englobante sont masquées de l'évaluation.

elem-count est une expression qui correspond à un entier.

_Group_(anno-list)

Toutes les annotations dans anno-list sont considérées comme se avoires tout qualificateur qui s'applique à l'annotation de groupe qui est appliquée à chaque annotation.

_When_(expr, anno-list)

expr est une expression qui peut être convertie en bool.Lorsqu'elle est non nulle (true), les annotations spécifiées dans anno-list sont considérées comme applicable.

Par défaut, pour chaque annotation en anno-list, expr est interprète comme avec les valeurs d'entrée si l'annotation est une condition préalable, et comme avec les valeurs de sortie si l'annotation est une condition après.Pour substituer la valeur par défaut, vous pouvez utiliser l'intrinsèque d' _Old_ lorsque vous évaluez après une condition pour indiquer que les valeurs d'entrée doivent être utilisées.

RemarqueRemarque
Les annotations peuvent être activées par suite d'utiliser _When_ si un mutable valeur- pour l'exemple, *pLength— est impliqué parce que le résultat d' expr évalué dans une condition préalable peut différer de son résultat évalué après dans la condition.

Voir aussi

Référence

Annotation de paramètres de fonction et valeurs de retour

Annotation du comportement d'une fonction

Structs et classes d'annotation

Annotation du comportement de verrouillage

Fonctions intrinsèques

Meilleures pratiques et exemples (SAL)

Concepts

Présentation de SAL

Autres ressources

Utilisation d'annotations SAL pour réduire les défauts du code C/C++