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 las llamadas de función tienen efectos secundarios en este contexto. Sin embargo, SAL proporciona algunos objetos de función y algunos símbolos reservados que se pueden usar en expresiones SAL. Se conocen como funciones intrínsecas.

De uso general

Las siguientes anotaciones de función instrinsicas proporcionan utilidad general para SAL.

Anotación Descripción
_Curr_ Sinónimo del objeto que se está anotando actualmente. Cuando la _At_ anotación está en uso, _Curr_ es igual que el primer parámetro de _At_ . De lo contrario, es el parámetro o la función completa o el valor devuelto con el 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 representarlo mediante una expresión de anotación, por ejemplo, cuando se calcula mediante el examen de un conjunto de datos de entrada y, a continuación, el recuento de miembros seleccionados.
_Nullterm_length_(param) param es el número de elementos del búfer hasta , pero sin incluir un terminador null. 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 posterior, devuelve el valor tal como se habría evaluado expr en condición previa.
_Param_(n) El n parámetro th de una función, que cuenta de 1 n a , y es una constante entero n literal. Si el parámetro tiene nombre, esta anotación es idéntica a tener acceso al parámetro por nombre. Nota: puede hacer referencia a los parámetros posicionales que se definen mediante 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.

Específico de cadena

Las siguientes anotaciones de función intrínsecas permiten la manipulación de cadenas. Las cuatro funciones tienen el mismo propósito: devolver el número de elementos del tipo que se encuentra antes de un terminador nulo. Las diferencias son los tipos de datos de los elementos a los que se hace referencia. Tenga en cuenta que si desea especificar la longitud de un búfer terminado en NULL que no se compone de caracteres, use la anotación _Nullterm_length_(param) de la sección anterior.

Anotación Descripción
_String_length_(param) param es el número de elementos de la cadena hasta , pero sin incluir un terminador null. Esta anotación está reservada para los tipos de cadena de caracteres.
strlen(param) param es el número de elementos de la cadena hasta , pero sin incluir un terminador null. Esta anotación está reservada para su uso en matrices de caracteres y se parece a la función strlen() delruntime de C.
wcslen(param) param es el número de elementos de la cadena hasta (pero sin incluir) un terminador nulo. Esta anotación está reservada para su uso en matrices de caracteres anchos y se parece a la función en tiempo de ejecución de C wcslen().

Vea también