Funciones intrínsecas
Una expresión en SAL puede ser una expresión de C/C++ siempre que sea una expresión que no tenga efectos secundarios; por ejemplo, ++, --, y llamadas de función tienen efectos secundarios en este contexto. Sin embargo, SAL proporciona algunos objetos similares a funciones y algunos símbolos reservados que se pueden usar en expresiones SAL. Estos se conocen como funciones intrínsecas.
Uso general
Las siguientes anotaciones de función instrínseca proporcionan utilidad general para SAL.
Annotation | Descripción |
---|---|
_Curr_ |
Sinónimo del objeto que se anota actualmente. Cuando la anotación _At_ está en uso, _Curr_ es igual que el primer parámetro para _At_ . De lo contrario, es el parámetro o la función entera/valor devuelto con los que la anotación está asociada léxicamente. |
_Inexpressible_(expr) |
Expresa una situación en la que el tamaño de un búfer es demasiado complejo para representar mediante una expresión de anotación; por ejemplo, cuando se calcula mediante el examen de un conjunto de datos de entrada y, luego, se cuentan los miembros seleccionados. |
_Nullterm_length_(param) |
param es el número de elementos del búfer hasta un terminador NULL (sin incluir este). Se puede aplicar a cualquier búfer de tipo no agregado y no nulo. |
_Old_(expr) |
Cuando se evalúa en condición previa, _Old_ devuelve el valor de entrada expr . Cuando se evalúa en condición previa, devuelve el valor expr como se habría evaluado en la condición previa. |
_Param_(n) |
El parámetro n th a una función, contando desde 1 hasta n , y n es una constante integral literal. Si se nombra el parámetro, esta anotación es idéntica a acceder al parámetro por nombre. Nota: n pueden hacer referencia a los parámetros posicionales definidos por puntos suspensivos o se pueden usar en prototipos de función donde no se usan nombres. |
return |
La palabra clave reservada de C/C++ return se puede usar en una expresión SAL para indicar el valor devuelto de una función. El valor solo está disponible en estado posterior; es un error de sintaxis usarlo en estado previo. |
Cadena específica
Las siguientes anotaciones de función intrínseca permiten la manipulación de cadenas. Estas cuatro funciones tienen el mismo propósito: devolver el número de elementos del tipo que se encuentra delante de un terminador NULL. Las diferencias son los tipos de datos de los elementos a los que se hace referencia. Tenga en cuenta que si quiere especificar la longitud de un búfer terminado en NULL que no esté compuesto de caracteres, debe usar la anotación _Nullterm_length_(param)
de la sección anterior.
Annotation | Descripción |
---|---|
_String_length_(param) |
param es el número de elementos de la cadena hasta un terminador NULL (sin incluir este). Esta anotación está reservada para tipos de cadena de caracteres. |
strlen(param) |
param es el número de elementos de la cadena hasta un terminador NULL (sin incluir este). Esta anotación está reservada para su uso en matrices de caracteres y es similar a la función strlen() del entorno de ejecución de C. |
wcslen(param) |
param es el número de elementos de la cadena hasta un terminador NULL (sin incluir este). Esta anotación está reservada para su uso en matrices de caracteres anchos y recuerda a la función en tiempo de ejecución de C wcslen(). |
Consulte también
- Uso de anotaciones SAL para reducir defectos de código de C/C++
- Introducción a SAL
- Anotar parámetros de función y valores devueltos
- Anotar el comportamiento de funciones
- Anotar structs y clases
- Anotar comportamiento de bloqueo
- Especificar cuándo y dónde se aplica una anotación
- Procedimientos recomendados y ejemplos