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 casos síncronos êxito sempre se houver, mas em casos assíncronos relata um erro se não obterá êxito imediatamente.Quando a função é chamada de forma síncrona, verificar o valor do resultado não fornecer nenhum valor ao analisador de código porque não retornaria.Entretanto, quando a função é chamada de forma assíncrona e o resultado da função não é verificado, um sério erro pode ocorrer.Este exemplo ilustra uma situação em que você pode usar _When_ anotação- descrito posteriormente neste artigo- permite verificação.

Anotações estruturais

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

Anotação

Descrição

_At_(expr, anno-list)

expr é uma expressão que gere um lvalue.As anotações em anno-list são aplicadas ao objeto que é chamado por expr.Para cada anotação em anno-list, expr é interpretado na condição anterior se a anotação é interpretada na condição anterior, e posteriores na condição se a anotação é interpretada em após condição.

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

expr é uma expressão que gere um lvalue.As anotações em anno-list são aplicadas ao objeto que é chamado por expr.Para cada anotação em anno-list, expr é interpretado na condição anterior se a anotação é interpretada na condição anterior, e posteriores na condição se a anotação é interpretada em após condição.

iter é o nome de uma variável que é delimitado para anotação (inclusive de anno-list).iter tem um tipo implícito long.Variáveis idêntica nomeados em qualquer o escopo delimitador são ocultados de avaliação.

elem-count é uma expressão que avalia para um número inteiro.

_Group_(anno-list)

Todas as anotações em anno-list são considerados ter qualquer qualificador que se aplica a anotação de grupo que é aplicado a cada anotação.

_When_(expr, anno-list)

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

Por padrão, para cada anotação em anno-list, expr é interpretado como usar os valores de entrada se a anotação é uma condição anterior, e como usar os valores de saída se a anotação é uma condição posteriores.Para substituir a opção, você pode usar o intrínsecos de _Old_ quando você avaliar uma condição posteriores para indicar que os valores de entrada devem ser usados.

ObservaçãoObservação
As anotações diferentes podem ser ativados no resultado de usar _When_ se um mutável - por exemplo, *pLength— estiver envolvido porque o resultado de expr avaliado na condição anterior pode diferir do resultado avaliado em após 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 sobre SAL

Outros recursos

Usando o SAL anotações para reduzir os defeitos no código C/C++