Spécification du moment où une annotation est applicable et dans quel casSpecifying When and Where an Annotation Applies

Lorsqu’une annotation est conditionnelle, elle peut nécessiter des autres annotations pour spécifier que l’analyseur.When an annotation is conditional, it may require other annotations to specify that to the analyzer. Par exemple, si une fonction a une variable qui peut être synchrone ou asynchrone, la fonction se comporte comme suit : dans le cas synchrone il finit par réussit toujours, mais dans le cas asynchrone, il signale une erreur si elle ne peut pas réussir immédiatement.For example, if a function has a variable that can be either synchronous or asynchronous, the function behaves as follows: In the synchronous case it always eventually succeeds, but in the asynchronous case it reports an error if it can't succeed immediately. Lorsque la fonction est appelée de manière synchrone, la vérification de la valeur de résultat ne fournit aucune valeur à l’Analyseur de code, car il n'aurait pas retourné.When the function is called synchronously, checking the result value provides no value to the code analyzer because it would not have returned. Toutefois, lorsque la fonction est appelée de façon asynchrone et le résultat de fonction n’est pas activé, une erreur grave peut se produire.However, when the function is called asynchronously and the function result is not checked, a serious error could occur. Cet exemple illustre une situation dans laquelle vous pouvez utiliser la _When_ annotation, décrite plus loin dans cet article : pour activer la recherche.This example illustrates a situation in which you could use the _When_ annotation—described later in this article—to enable checking.

Annotations de la structureStructural Annotations

Pour contrôler quand et où les annotations s’appliquent, utilisez les annotations de la structure suivantes.To control when and where annotations apply, use the following structural annotations.

AnnotationAnnotation DescriptionDescription
_At_(expr, anno-list) expr est une expression qui produit une lvalue.expr is an expression that yields an lvalue. Les annotations dans anno-list sont appliquées à l’objet nommé par expr.The annotations in anno-list are applied to the object that is named by expr. Pour chaque annotation dans anno-list, expr est interprétée en condition préalable, si l’annotation est interprétée de condition préalable, post-condition if l’annotation est interprétée dans la condition préalable.For each annotation in anno-list, expr is interpreted in pre-condition if the annotation is interpreted in pre-condition, and in post-condition if the annotation is interpreted in post-condition.
_At_buffer_(expr, iter, elem-count, anno-list) expr est une expression qui produit une lvalue.expr is an expression that yields an lvalue. Les annotations dans anno-list sont appliquées à l’objet nommé par expr.The annotations in anno-list are applied to the object that is named by expr. Pour chaque annotation dans anno-list, expr est interprétée en condition préalable, si l’annotation est interprétée de condition préalable, post-condition if l’annotation est interprétée dans la condition préalable.For each annotation in anno-list, expr is interpreted in pre-condition if the annotation is interpreted in precondition, and in post-condition if the annotation is interpreted in post-condition.

iter est le nom d’une variable de portée est limitée à l’annotation (comprend anno-list).iter is the name of a variable that is scoped to the annotation (inclusive of anno-list). iter a un type implicite long.iter has an implicit type long. Les variables portant le même nommés dans toute portée englobante sont masqués à partir de l’évaluation.Identically named variables in any enclosing scope are hidden from evaluation.

elem-count est une expression qui correspond à un entier.elem-count is an expression that evaluates to an integer.
_Group_(anno-list) Les annotations dans anno-list sont tous considérés comme ayant un qualificateur qui s’applique à l’annotation de groupe est appliquée à chaque annotation.The annotations in anno-list are all considered to have any qualifier that applies to the group annotation that is applied to each annotation.
_When_(expr, anno-list) expr est une expression qui peut être convertie en bool.expr is an expression that can be converted to bool. Lorsqu’elle est différente de zéro (true), les annotations sont spécifiées dans anno-list sont considérés comme applicable.When it is non-zero (true), the annotations that are specified in anno-list are considered applicable.

Par défaut, pour chaque annotation dans anno-list, expr est interprété comme à l’aide de valeurs d’entrée si l’annotation est une condition préalable, et en utilisant les valeurs de sortie si l’annotation est une condition préalable.By default, for each annotation in anno-list, expr is interpreted as using the input values if the annotation is a precondition, and as using the output values if the annotation is a post-condition. Pour remplacer la valeur par défaut, vous pouvez utiliser la _Old_ intrinsèque lors de l’évaluation d’une condition préalable pour indiquer que les valeurs d’entrée doivent être utilisés.To override the default, you can use the _Old_ intrinsic when you evaluate a post-condition to indicate that input values should be used. Remarque : des annotations peuvent être activées suite à l’aide de _When_ si une valeur mutable : par exemple, *pLength— est requise car le résultat de expr dans la condition préalable peut différer de son évaluée résultat dans la condition préalable.Note: Different annotations might be enabled as a consequence of using _When_ if a mutable value—for example, *pLength—is involved because the evaluated result of expr in precondition may differ from its evaluated result in post-condition.

Voir aussiSee Also

Utilisation d’Annotations SAL pour réduire les défauts du Code C/C++ présentation de SAL annotation de paramètres de fonction et valeurs de retour annotation du comportement de la fonction Structs et Classes d’annotation annotation du comportement de verrouillage des fonctions intrinsèques meilleures pratiques et exemplesUsing SAL Annotations to Reduce C/C++ Code Defects Understanding SAL Annotating Function Parameters and Return Values Annotating Function Behavior Annotating Structs and Classes Annotating Locking Behavior Intrinsic Functions Best Practices and Examples