Partilhar via


Anotando estruturas e classes

É possível anotar o struct e classificar membros usando as anotações que atuam como invariants- são presumidos ser verdadeiros em qualquer chamada de função ou função entrada/saída que envolve a estrutura inclusive como um parâmetro ou um valor do resultado.

A estrutura da classe e anotações

Anotação

Descrição

_Field_range_(low, high)

O campo está no intervalo (inclusivo) de low a high. O equivalente a _Satisfies_(_Curr_ >= low && _Curr_ <= high) aplicada ao objeto anotado usando o apropriado pre ou condições de postagem.

_Field_size_(size)

_Field_size_opt_(size)

_Field_size_bytes_(size)

_Field_size_bytes_opt_(size)

Um campo que tem um tamanho gravável em elementos ou (em bytes) conforme especificado por size.

_Field_size_part_(size, count)

_Field_size_part_opt_(size, count)

_Field_size_bytes_part_(size, count)

_Field_size_bytes_part_opt_(size, count)

Um campo que tem um tamanho gravável em elementos ou (em bytes) conforme especificado por size, e count dos elementos (bytes) que são legíveis.

_Field_size_full_(size)

_Field_size_full_opt_(size)

_Field_size_bytes_full_(size)

_Field_size_bytes_full_opt_(size)

Um campo que tem o tamanho legível e gravável em elementos ou (em bytes) conforme especificado por size.

_Struct_size_bytes_(size)

Se aplica à declaração da estrutura ou da classe. Indica que um objeto válida desse tipo pode ser maior que o tipo declarado, com o número de bytes que estão sendo especificados por size. Por exemplo:

typedef _Struct_size_bytes_(nSize)
struct MyStruct {
    size_t nSize;

};
 

O tamanho do buffer em bytes de um parâmetro pM do tipo MyStruct * é então ser efetuado:

min(pM->nSize, sizeof(MyStruct))

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

Especificando quando e onde uma anotação se aplica

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++