Partager via


Structs et classes d'annotation

Il est possible d'annoter les membres de structure et de classe avec des annotations qui agissent comme des invariants, ils sont présumés vrais lors de tous les appels de fonction ou entrées/sorties de fonction qui impliquent la structure englobante comme valeur de paramètre ou de résultat.

Annotations de structure et de classe

Annotation

Description

_Field_range_(low, high)

Le champ est dans la plage (inclusifs) de low à high. Equivalent à _Satisfies_(_Curr_ >= low && _Curr_ <= high) appliqué à l'objet annoté en utilisant la pré/postcondition appropriée.

_Field_size_(size)

_Field_size_opt_(size)

_Field_size_bytes_(size)

_Field_size_bytes_opt_(size)

Un champ dont la taille d'écriture en éléments (ou octets) comme spécifié par 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)

Un champ dont la taille d'écriture en éléments (ou octets) comme spécifié par size, et count de ces éléments (en octets) qui sont lisibles.

_Field_size_full_(size)

_Field_size_full_opt_(size)

_Field_size_bytes_full_(size)

_Field_size_bytes_full_opt_(size)

Un champ dont la taille de lecture et d'écriture en éléments (ou octets) comme spécifié par size.

_Struct_size_bytes_(size)

S'applique au struct ou à la déclaration de classe. Indique qu'un objet valide de ce type peut être plus grand que le type déclaré, avec le nombre d'octets spécifié par size. Par exemple :

typedef _Struct_size_bytes_(nSize)
struct MyStruct {
    size_t nSize;

};
 

La taille de mémoire tampon en octets d'un paramètre pM de type MyStruct * est ensuite prise pour être :

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

Voir aussi

Référence

Annotation de paramètres de fonction et valeurs de retour

Annotation du comportement d'une fonction

Annotation du comportement de verrouillage

Spécification du moment où une annotation est applicable et dans quel cas

Fonctions intrinsèques

Meilleures pratiques et exemples (SAL)

Concepts

Présentation de SAL

Autres ressources

Utilisation d'annotations SAL pour réduire les défauts du code C/C++