Funciones intrínsecasIntrinsic Functions

Una expresión de SAL puede ser una expresión de C o C++, siempre que sea una expresión que no tiene efectos secundarios, por ejemplo, ++,--y llamadas a función todas tienen efectos secundarios en este contexto.An expression in SAL can be a C/C++ expression provided that it is an expression that does not have side effects—for example, ++, --, and function calls all have side effects in this context. Sin embargo, SAL proporcionar algunos objetos de tipo de función y algunos símbolos reservados que se pueden usar en expresiones de SAL.However, SAL does provide some function-like objects and some reserved symbols that can be used in SAL expressions. Estos se conocen como funciones intrínsecas.These are referred to as intrinsic functions.

Uso generalGeneral Purpose

Las anotaciones de función intrínsecas siguientes proporcionan utilidad generales para SAL.The following instrinsic function annotations provide general utility for SAL.

AnotaciónAnnotation DescripciónDescription
_Curr_ Un sinónimo para el objeto que está actualmente que se va a anotar.A synonym for the object that is currently being annotated. Cuando el _At_ anotación está en uso, _Curr_ es el mismo que el primer parámetro _At_.When the _At_ annotation is in use, _Curr_ is the same as the first parameter to _At_. En caso contrario, es el parámetro o el valor de todo o valor devuelto de función al que está asociada léxicamente la anotación.Otherwise, it is the parameter or the entire function/return value with which the annotation is lexically associated.
_Inexpressible_(expr) Expresa una situación donde 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, a continuación, contar miembros seleccionados.Expresses a situation where the size of a buffer is too complex to represent by using an annotation expression—for example, when it is computed by scanning an input data set and then counting selected members.
_Nullterm_length_(param) param es el número de elementos en el búfer hasta, pero sin incluir un terminador nulo.param is the number of elements in the buffer up to but not including a null terminator. Se puede aplicar a cualquier búfer de tipo no agregada y distinto de void.It may be applied to any buffer of non-aggregate, non-void type.
_Old_(expr) Cuando se evalúa en condición previa, _Old_ devuelve el valor de entrada expr.When it is evaluated in precondition, _Old_ returns the input value expr. Cuando se evalúa en la condición posterior, devuelve el valor expr tal y como se habría evaluado en condición previa.When it is evaluated in post-condition, it returns the value expr as it would have been evaluated in precondition.
_Param_(n) El nparámetro a una función, contando desde 1 a n, y n es una literal constante integral.The nth parameter to a function, counting from 1 to n, and n is a literal integral constant. Si el parámetro se denomina, esta anotación es idéntica al tener acceso a los parámetros por nombre.If the parameter is named, this annotation is identical to accessing the parameter by name. Nota: n pueden hacer referencia a los parámetros posicionales se definen por puntos suspensivos, o pueden utilizarse en prototipos de función donde no se utilizan nombres. Note: n may refer to the positional parameters that are defined by an ellipsis, or may be used in function prototypes where names are not used.
return Palabra clave reservada de C o C++ return puede utilizarse en una expresión de SAL para indicar el valor devuelto de una función.The C/C++ reserved keyword return can be used in a SAL expression to indicate the return value of a function. El valor sólo está disponible en el estado de publicación; es un error de sintaxis se utiliza en el estado anterior.The value is only available in post state; it is a syntax error to use it in pre state.

Cadena específicaString Specific

Las siguientes anotaciones de función intrínseca habilitar la manipulación de cadenas.The following intrinsic function annotations enable manipulation of strings. Los cuatro de estas funciones tienen la misma finalidad: para devolver el número de elementos del tipo que se encuentra antes de un terminador nulo.All four of these functions serve the same purpose: to return the number of elements of the type that is found before a null terminator. Las diferencias son los tipos de datos en los elementos que se hace referencia.The differences are the kinds of data in the elements that are referred to. Tenga en cuenta que si desea especificar la longitud de un terminada en null de búferes que no se compone de caracteres, utilice el _Nullterm_length_(param) anotación de la sección anterior.Note that if you want to specify the length of a null-terminated buffer that is not composed of characters, use the _Nullterm_length_(param) annotation from the previous section.

AnotaciónAnnotation DescripciónDescription
_String_length_(param) param es el número de elementos de la cadena hasta, pero sin incluir un terminador nulo.param is the number of elements in the string up to but not including a null terminator. Esta anotación está reservada para los tipos de cadena de caracteres.This annotation is reserved for string-of-character types.
strlen(param) param es el número de elementos de la cadena hasta, pero sin incluir un terminador nulo.param is the number of elements in the string up to but not including a null terminator. Esta anotación está reservada para uso en carácter de las matrices y es similar a la función en tiempo de ejecución de C strlen().This annotation is reserved for use on character arrays and resembles the C Runtime function strlen().
wcslen(param) param es el número de elementos de la cadena hasta (sin incluirlo) un terminador nulo.param is the number of elements in the string up to (but not including) a null terminator. Esta anotación está reservada para uso en caracteres anchos las matrices y se asemeja a la función en tiempo de ejecución de C wcslen().This annotation is reserved for use on wide character arrays and resembles the C Runtime function wcslen().

Vea tambiénSee Also

Utilizar anotaciones SAL para reducir defectos de código de C o C++ descripción SAL anotar parámetros de función y valores devueltos anotar el comportamiento de la función Anotar Structs y clases anotar el comportamiento de bloqueo especificar cuándo y dónde se aplica una anotación prácticas recomendadas y ejemplosUsing 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 Specifying When and Where an Annotation Applies Best Practices and Examples