Partilhar via


Funções Intrínsecas

Uma expressão em SAL pode ser uma expressão C/C++ desde que seja uma expressão que não tenha efeitos colaterais — por exemplo, ++, --, e chamadas de função todas têm efeitos colaterais nesse contexto. No entanto, o SAL fornece alguns objetos semelhantes a funções e alguns símbolos reservados que podem ser usados em expressões SAL. Estas são designadas por funções intrínsecas.

Finalidade Geral

As seguintes anotações de funções intrínsecas fornecem utilidade geral para o SAL.

Anotação Descrição
_Curr_ Um sinônimo para o objeto que está sendo anotado no momento. Quando a _At_ anotação está em uso, _Curr_ é o mesmo que o primeiro parâmetro para _At_. Caso contrário, é o parâmetro ou todo o valor de função/retorno com o qual a anotação está lexicamente associada.
_Inexpressible_(expr) Expressa uma situação em que o tamanho de um buffer é muito complexo para representar usando uma expressão de anotação — por exemplo, quando ele é calculado pela varredura de um conjunto de dados de entrada e, em seguida, contando membros selecionados.
_Nullterm_length_(param) param é o número de elementos no buffer até, mas não incluindo, um terminador nulo. Pode ser aplicado a qualquer buffer de tipo não agregado e não nulo.
_Old_(expr) Quando é avaliado em pré-condição, _Old_ retorna o valor de entrada expr. Quando é avaliado em pós-condição, ele retorna o valor expr como se fosse avaliado na pré-condição.
_Param_(n) O n-ésimo parâmetro de uma função, contando de 1 a n, e n é uma constante literal inteira. Se o parâmetro for nomeado, essa anotação será idêntica ao acesso ao parâmetro pelo nome. Observação:n pode referir-se aos parâmetros posicionais que são definidos por uma reticência, ou pode ser usado em protótipos de função onde os nomes não são usados.
return A palavra-chave return reservada C/C++ pode ser usada em uma expressão SAL para indicar o valor de retorno de uma função. O valor só está disponível no estado post; é um erro de sintaxe usá-lo no pré-estado.

String específica

As seguintes anotações de função intrínseca permitem a manipulação de cadeias de caracteres. Todas essas quatro funções servem o mesmo propósito: retornar o número de elementos do tipo que é encontrado antes de um terminador nulo. As diferenças são os tipos de dados nos elementos referidos. Observe que, se você quiser especificar o comprimento de um buffer terminado nulo que não é composto de caracteres, use a _Nullterm_length_(param) anotação da seção anterior.

Anotação Descrição
_String_length_(param) param é o número de elementos na cadeia de caracteres até, mas não incluindo, um terminador nulo. Esta anotação é reservada para tipos de cadeia de caracteres.
strlen(param) param é o número de elementos na cadeia de caracteres até, mas não incluindo, um terminador nulo. Essa anotação é reservada para uso em matrizes de caracteres e se assemelha à função C Runtime strlen().
wcslen(param) param é o número de elementos na cadeia de caracteres até (mas não incluindo) um terminador nulo. Esta anotação é reservada para uso em matrizes de caracteres largos e se assemelha à função C Runtime wcslen().

Ver também