Anotando o comportamento da função
Além de anotar parâmetros e valores de retorno de função, você poderá anotar propriedades de função inteira.
Anotações de função
As seguintes anotações se aplicam a função no conjunto descrevem-se e como ele se comporta ou o que espera ser verdadeiro.
Anotação |
Descrição |
---|---|
_Called_from_function_class_(name) |
Não deve estar exatamente; em vez disso, é um predicado a ser usado com nota de _When_ .Para obter mais informações, consulte Especificando quando e onde uma anotação se aplica. O parâmetro de name é uma cadeia de caracteres arbitrária que ele apareça em uma anotação de _Function_class_ na declaração de algumas funções. retorna _Called_from_function_class_ diferente de zero se a função que está sendo analisada atualmente é anotada usando _Function_class_ que tem o mesmo valor de name; caso contrário, retornará zero. |
_Check_return_ |
Annotates um valor de retorno e indica que este deve o inspecionar.O testador relata um erro se a função é chamada em um contexto vago. |
_Function_class_(name) |
O parâmetro de name é uma cadeia de caracteres arbitrária que é designada pelo usuário.Existe em um namespace que é distinta de namespaces.Uma função, um ponteiro de função, ou - mais um tipo ponteiro de função de usefully-a podem ser designado como o pertence a uma ou mais classes de função. |
_Raises_SEH_exception_ |
Annotates uma função que sempre gera uma exceção estruturada de (SEH) de manipulador de exceção, o assunto a _When_ e as condições de _On_failure_ .Para obter mais informações, consulte Especificando quando e onde uma anotação se aplica. |
_Maybe_raises_SEH_exception_ |
Annotates uma função que pode opcionalmente aumentar a exceção, sujeitos a _When_ e as condições de _On_failure_ . |
_Must_inspect_result_ |
Annotates qualquer valor de saída, incluindo o valor de retorno, os parâmetros, e os globais.O analisador relata um erro se o valor no objeto anotado não é inspecionado posteriormente. “A inspeção” inclui se é usada em uma expressão condicional, atribuída a um parâmetro de saída ou global, ou é passado como um parâmetro.Para valores de retorno, _Must_inspect_result_ implica _Check_return_. |
_Use_decl_annotations_ |
Pode ser usado em uma definição de função (também conhecida como um corpo da função) no lugar da lista de anotações no cabeçalho. Quando _Use_decl_annotations_ é usado, as anotações que aparecem em um cabeçalho de em- escopo para a mesma função são usadas como se eles também atual na definição que tem nota de _Use_decl_annotations_ . |
Anotações de sucesso ou falha
Uma função pode falhar, e quando fizer isso, seus resultados podem estar ou incompletos diferir de resultados quando a função êxito.As anotações na lista a seguir fornecem maneiras para expressar o comportamento de falha.Para usar essas anotações, você deve habilitar-las para determinar o êxito; como consequência, uma anotação de _Success_ é necessária.Observe que NTSTATUS e HRESULT já têm uma anotação de _Success_ compilada neles; no entanto, se você especificar sua própria anotação de _Success_ em NTSTATUS ou em HRESULT, substitui a anotação interno.
Anotação |
Descrição |
---|---|
_Always_(anno_list) |
Equivalente a anno_list _On_failure_(anno_list); ou seja, as anotações em anno_list mesmo se aplicam a função êxito. |
_On_failure_(anno_list) |
Para ser usado somente quando _Success_ também é usado para fazer anotações explicitamente a função ou, ou implicitamente com _Return_type_success_ em um typedef.Quando a anotação de _On_failure_ está presente em um ou em um valor de retorno da função, cada anotação em anno_list () anno se comporta como se foi codificado como _When_(!expr, anno), onde é expr o parâmetro a anotação de _Success_ necessário.Isso significa que o aplicativo inferido de _Success_ a todas as condições pré não se aplica para _On_failure_. |
_Return_type_success_(expr) |
Pode ser aplicado a um typedef.Indica que todas as funções que retornam esse tipo e não têm explicitamente _Success_ são anotadas como se tivessem _Success_(expr)._Return_type_success_ não pode ser usado em uma função ou em um typedef ponteiro de função. |
_Success_(expr) |
expr é uma expressão que gere um rvalue.Quando a anotação de _Success_ está presente em uma declaração ou em uma definição de função, cadaannoanotação () na função e posteriores na condição se comporta como se foi codificado como _When_(expr, anno).Nota de _Success_ pode ser usada somente em uma função, não em seu parâmetros ou tipo de retorno.Pode haver no máximo uma anotação de _Success_ em uma função, e não pode estar em qualquer _When_, em _At_, ou em _Group_.Para obter mais informações, consulte Especificando quando e onde uma anotação se aplica. |
Consulte também
Referência
Anotando parâmetros de função e valores de retorno
Anotando o comportamento de bloqueio
Especificando quando e onde uma anotação se aplica
Práticas recomendadas e exemplos (SAL)
Conceitos
Outros recursos
Usando o SAL anotações para reduzir os defeitos no código C/C++