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çã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 o comportamento de bloqueio
Práticas recomendadas e exemplos (SAL)
Conceitos
Outros recursos
Usando o SAL anotações para reduzir os defeitos no código C/C++