Systeminterne Funktionen

Ein Ausdruck in SAL kann ein C/C++-Ausdruck sein, vorausgesetzt, es handelt sich um einen Ausdruck, der keine Nebenwirkungen hat, z. B. ++, --, und Funktionsaufrufe, haben in diesem Kontext Nebenwirkungen. Sal stellt jedoch einige funktionsähnliche Objekte und einige reservierte Symbole bereit, die in SAL-Ausdrücken verwendet werden können. Diese werden als systeminterne Funktionen bezeichnet.

Universell

Die folgenden instrinsischen Funktionsanmerkungen stellen allgemeine Hilfsprogramme für SAL bereit.

Anmerkung Beschreibung
_Curr_ Ein Synonym für das Objekt, das derzeit kommentiert wird. Wenn die _At_ Anmerkung verwendet wird, _Curr_ ist identisch mit dem ersten Parameter für _At_. Andernfalls handelt es sich um den Parameter oder den gesamten Funktions-/Rückgabewert, dem die Anmerkung lexikalisch zugeordnet ist.
_Inexpressible_(expr) Zeigt eine Situation an, in der die Größe eines Puffers zu komplex ist, um mithilfe eines Anmerkungsausdrucks darzustellen, z. B. wenn sie durch Scannen eines Eingabedatensatzes und anschließendes Zählen ausgewählter Elemente berechnet wird.
_Nullterm_length_(param) param ist die Anzahl der Elemente im Puffer bis zu einem Null-Terminator, aber nicht einschließlich eines Null-Terminators. Er kann auf jeden Puffer eines nicht aggregierten, nicht ungültigen Typs angewendet werden.
_Old_(expr) Wenn sie in der Vorbedingung ausgewertet wird, _Old_ wird der Eingabewert exprzurückgegeben. Wenn sie in der Nachbedingung ausgewertet wird, gibt sie den Wert expr zurück, wie er in der Vorbedingung ausgewertet worden wäre.
_Param_(n) Der nth-Parameter zu einer Funktion, die von 1 bis ngezählt wird und n eine Literalintegralkonstante ist. Wenn der Parameter benannt ist, ist diese Anmerkung identisch mit dem Zugriff auf den Parameter anhand des Namens. Hinweis:n Kann auf die Positionsparameter verweisen, die durch eine Auslassungspunkte definiert werden, oder in Funktionsprototypen verwendet werden, bei denen keine Namen verwendet werden.
return Der reservierte C/C++-Schlüsselwort (keyword) return kann in einem SAL-Ausdruck verwendet werden, um den Rückgabewert einer Funktion anzugeben. Der Wert ist nur im Postzustand verfügbar; Es handelt sich um einen Syntaxfehler, der im Vorabzustand verwendet werden soll.

Spezifisches für Zeichenfolgen

Die folgenden systeminternen Funktionsanmerkungen ermöglichen die Manipulation von Zeichenfolgen. Alle vier dieser Funktionen dienen demselben Zweck: Um die Anzahl der Elemente des Typs zurückzugeben, die vor einem Null-Endator gefunden werden. Die Unterschiede sind die Arten von Daten in den Elementen, auf die verwiesen wird. Wenn Sie die Länge eines null-beendeten Puffers angeben möchten, der nicht aus Zeichen besteht, verwenden Sie die _Nullterm_length_(param) Anmerkung aus dem vorherigen Abschnitt.

Anmerkung Beschreibung
_String_length_(param) param ist die Anzahl der Elemente in der Zeichenfolge bis zu einem Null-Terminator, aber nicht enthalten. Diese Anmerkung ist für Zeichenfolgen-von-Zeichen-Typen reserviert.
strlen(param) param ist die Anzahl der Elemente in der Zeichenfolge bis zu einem Null-Terminator, aber nicht enthalten. Diese Anmerkung ist für die Verwendung in Zeichenarrays reserviert und ähnelt der C-Runtime-Funktion strlen().
wcslen(param) param ist die Anzahl der Elemente in der Zeichenfolge bis zu (aber nicht einschließlich) eines Null-Terminators. Diese Anmerkung ist für die Verwendung in breiten Zeichenarrays reserviert und ähnelt der C-Runtime-Funktion wcslen().

Siehe auch