Especificar cuándo y dónde se aplica una anotación
Cuando una anotación es condicional, puede exigir otras anotaciones especificar que el analizador.Por ejemplo, si una función tiene una variable que se puede sincrónica o asincrónica, la función se comporta como sigue: En el caso sincrónico correctamente siempre finalmente, pero en el caso asincrónico notifica un error si no puede tener éxito inmediatamente.Cuando se llama a la función sincrónicamente, comprobar el valor de resultado no proporciona ningún valor al analizador de código porque no habría vuelto.Sin embargo, cuando se llama a la función de forma asincrónica y el resultado de la función no se comprueba, un error grave podría aparecer.Este ejemplo muestra una situación en la que puede utilizar _When_ anotación- descrito más adelante en este artículo- a comprobar de permiso.
Anotaciones estructurales
Para controlar cuándo y donde se aplican las anotaciones, utilice las anotaciones estructurales siguientes.
Anotaciones |
Descripción |
---|---|
_At_(expr, anno-list) |
expr es una expresión que produce un valor l.Las anotaciones en anno-list se aplican al objeto que llama expr.Para cada anotaciones en anno-list, expr se interpreta en la condición previa si la anotación se interpreta en la condición previa y, en POST- condición si la anotación se interpreta en POST- condición. |
_At_buffer_(expr, iter, elem-count, anno-list) |
expr es una expresión que produce un valor l.Las anotaciones en anno-list se aplican al objeto que llama expr.Para cada anotaciones en anno-list, expr se interpreta en la condición previa si la anotación se interpreta en la condición previa y, en POST- condición si la anotación se interpreta en POST- condición. iter es el nombre de una variable cuyo ámbito a la anotación (incluidos anno-list).iter tiene un tipo implícito long.Las variables con nombres idénticos en cualquier ámbito de inclusión están ocultas a la evaluación. elem-count es una expresión que se evalúa como un entero. |
_Group_(anno-list) |
Las anotaciones en anno-list todas se consideran tener cualquier calificador que se aplican a la anotación de grupo que se aplica a cada anotación. |
_When_(expr, anno-list) |
expr es una expresión que se puede convertir en bool.Cuando es distinto de cero (true), las anotaciones que se especifican en anno-list se consideran aplicable. De forma predeterminada, para cada anotaciones en anno-list, expr se interpreta como mediante los valores de entrada si la anotación es una condición previa, como mediante los valores de salida si la anotación es una POST- condición.Para reemplazar el valor predeterminado, puede utilizar intrínsecos de _Old_ cuando se evalúa una POST- condición para indicar que los valores de entrada deben usarse.
Nota
Varias anotaciones se pueden habilitar como resultado de utilizar _When_ si el siguiente valor mutable para el ejemplo, *pLength— implicado porque el resultado evaluado de expr en la condición previa puede diferir del resultado evaluado en POST- condición.
|
Vea también
Referencia
Anotar parámetros de función y valores devueltos
Anotar el comportamiento de funciones
Anotar comportamiento de bloqueo
Procedimientos recomendados y ejemplos (SAL)
Conceptos
Otros recursos
Utilizar anotaciones SAL para reducir defectos de código de C/C++