Compartilhar via


Especificando quando e onde uma anotação se aplica

Quando uma anotação é condicional, pode exigir outras anotações especificar que o analisador. Por exemplo, se uma função tem uma variável que pode ser síncrona ou assíncrona, a função se comporta como segue: Em caso síncrono sempre terá êxito se houver, mas os casos assíncronas reporta um erro se não ter imediatamente.Quando a função é chamada de forma síncrona, verifique o valor do resultado não fornece nenhum valor ao analisador de código porque não retornaria. No entanto, quando a função é chamada de forma assíncrona e o resultado da função não é verificado, um erro grave pode ocorrer.Este exemplo ilustra uma situação em que você pode usar _When_ anotação- descrito posteriormente neste artigo permite verificar.

Anotações estruturais

Para controlar quando e onde as anotações se aplicam, use as anotações a seguir estruturais.

Anotação

Descrição

_At_(expr, anno-list)

expr é uma expressão que gerencie um lvalue.As anotações em anno-list são aplicadas ao objeto que é nomeada por expr.Para cada anotação em anno-list, expr é interpretada em pré-requisito se a anotação é interpretada na condição anterior, e pós-atualização na condição se a anotação é interpretada em posteriores a condição.

_At_buffer_(expr, iter, elem-count, anno-list)

expr é uma expressão que gerencie um lvalue.As anotações em anno-list são aplicadas ao objeto que é nomeada por expr.Para cada anotação em anno-list, expr é interpretada em pré-requisito se a anotação é interpretada na condição anterior, e pós-atualização na condição se a anotação é interpretada em posteriores a condição.

iter é o nome de uma variável que é definir o escopo para a anotação (inclusive de anno-list).iter tem um tipo longimplícito.As variáveis identicamente nomeados em qualquer escopo inclusive são ocultados de avaliação.

elem-count é uma expressão que é avaliada como um inteiro.

_Group_(anno-list)

Todas as anotações em anno-list são consideradas ter qualquer qualificador que se aplicar à anotação de grupo que é aplicada a cada anotação.

_When_(expr, anno-list)

expr é uma expressão que possa ser convertida em bool.Quando for diferente de zero (true), as anotações especificadas em anno-list são consideradas aplicável.

Por padrão, para cada anotação em anno-list, expr é interpretado como usar os valores de entrada se a anotação é um pré-requisito, e como usar os valores de saída se a anotação é uma condição pós-instalação.Para substituir a opção, você pode usar o intrínsecas de _Old_ quando você avalia após uma condição para indicar que os valores de entrada devem ser usados.

ObservaçãoObservação

As anotações diferentes podem ser habilitadas no resultado de usar _When_ se um mutável - por exemplo, *pLength— estiver envolvido porque o resultado avaliado de expr na condição anterior pode ser diferente do resultado avaliado após na condição.

Consulte também

Referência

Anotando parâmetros de função e valores de retorno

Anotando o comportamento da função

Anotando estruturas e classes

Anotando o comportamento de bloqueio

Funções intrínsecas

Práticas recomendadas e exemplos (SAL)

Conceitos

Noções básicas de SAL

Outros recursos

Usando anotações de SAL para reduzir defeitos de código do C/C++