Training
Modul
Accessibility design specs with annotations - Training
Accessibility design specs with annotations
Dieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
Sie können Struktur- und Klassenmember kommentieren, indem Sie Anmerkungen verwenden, die wie Invarianten fungieren– sie werden angenommen, dass sie bei jedem Funktionsaufruf oder Funktionseintrag/-exit wahr sind, der die eingeschlossene Struktur als Parameter oder ergebniswert umfasst.
_Field_range_(low, high)
Das Feld befindet sich im Bereich (einschließlich) von low
zu high
. Entspricht dem _Satisfies_(_Curr_ >= low && _Curr_ <= high)
Anwenden auf das kommentierte Objekt mithilfe der entsprechenden Vor- oder Nachbereitungsbedingungen.
_Field_size_(size)
, , _Field_size_opt_(size)
_Field_size_bytes_(size)
_Field_size_bytes_opt_(size)
Ein Feld, das eine schreibbare Größe in Elementen (oder Byte) aufweist, wie angegeben.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)
Ein Feld, das eine beschreibbare Größe in Elementen (oder Byte) aufweist, wie angegeben size
, und die Elemente (Bytes), die count
lesbar sind.
_Field_size_full_(size)
, , _Field_size_full_opt_(size)
_Field_size_bytes_full_(size)
_Field_size_bytes_full_opt_(size)
Ein Feld, das sowohl lesbare als auch schreibbare Größe in Elementen (oder Byte) aufweist, wie angegeben size
.
_Field_z_
Ein Feld, das eine null-beendete Zeichenfolge enthält.
_Struct_size_bytes_(size)
Gilt für Struktur- oder Klassendeklaration. Gibt an, dass ein gültiges Objekt dieses Typs größer als der deklarierte Typ sein kann, wobei die Anzahl der Byte angegeben wird size
. Zum Beispiel:
typedef _Struct_size_bytes_(nSize)
struct MyStruct {
size_t nSize;
...
};
Die Puffergröße in Byte eines pM
Typparameters MyStruct *
wird dann wie folgt übernommen:
min(pM->nSize, sizeof(MyStruct))
#include <sal.h>
// This _Struct_size_bytes_ is equivalent to what below _Field_size_ means.
_Struct_size_bytes_(__builtin_offsetof(MyBuffer, buffer) + bufferSize * sizeof(int))
struct MyBuffer
{
static int MaxBufferSize;
_Field_z_
const char* name;
int firstField;
// ... other fields
_Field_range_(1, MaxBufferSize)
int bufferSize;
_Field_size_(bufferSize) // Preferred way - easier to read and maintain.
int buffer[]; // Using C99 Flexible array member
};
Hinweise für dieses Beispiel:
_Field_z_
entspricht _Null_terminated_
. _Field_z_
für das Namensfeld gibt an, dass das Namensfeld eine null-beendete Zeichenfolge ist._Field_range_
for bufferSize
specifies that the value of bufferSize
should be within 1 and MaxBufferSize
(both inclusive)._Struct_size_bytes_
Und _Field_size_
Anmerkungen sind gleichwertig. Für Strukturen oder Klassen mit einem ähnlichen Layout ist es einfacher zu _Field_size_
lesen und zu verwalten, da sie weniger Verweise und Berechnungen als die entsprechende _Struct_size_bytes_
Anmerkung aufweist. _Field_size_
erfordert keine Konvertierung in die Bytegröße. Wenn die Bytegröße die einzige Option ist, z. B. für ein leeres Zeigerfeld, _Field_size_bytes_
kann verwendet werden. Wenn beides _Struct_size_bytes_
vorhanden ist _Field_size_
, stehen beide Tools zur Verfügung. Es liegt an dem Tool, was zu tun ist, wenn die beiden Anmerkungen nicht einverstanden sind.Training
Modul
Accessibility design specs with annotations - Training
Accessibility design specs with annotations