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.
|
Consulte também
Referência
Anotando parâmetros de função e valores de retorno
Anotando o comportamento da função
Anotando o comportamento de bloqueio
Práticas recomendadas e exemplos (SAL)
Conceitos
Outros recursos
Usando anotações de SAL para reduzir defeitos de código do C/C++