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 intrinsische 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, ist _Curr_ 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. Sie kann auf jeden Puffer eines nicht aggregierten, nicht ungültigen Typs angewendet werden. |
_Old_(expr) |
Wenn sie in der Vorbedingung ausgewertet wird, gibt _Old_ den Eingabewert expr zurück. Wenn sie in der Nachbedingung ausgewertet wird, gibt sie den Wert expr zurück, wie sie in der Vorbedingung ausgewertet worden wäre. |
_Param_(n) |
Der n th-Parameter zu einer Funktion, die von 1 bis n gezählt wird, n ist eine Literalintegralkonstante. 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 |
Das reservierte Schlüsselwort return C/C++ 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-Abschlusszeichen 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 Nullabschlusszeichen (nicht einschließlich). Diese Anmerkung ist für Zeichenfolgen-von-Zeichen-Typen reserviert. |
strlen(param) |
param ist die Anzahl der Elemente in der Zeichenfolge bis zu einem Nullabschlusszeichen (nicht einschließlich). 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-Abschlusszeichens. Diese Anmerkung ist für die Verwendung in breiten Zeichenarrays reserviert und ähnelt der C-Runtime-Funktion wcslen(). |
Weitere Informationen
- Verwenden von SAL-Anmerkungen zum Reduzieren von C/C++-Codefehlern
- Einführung in SAL
- Hinzufügen einer Anmerkung zu Funktionsparametern und Rückgabewerten
- Hinzufügen einer Anmerkung zum Funktionsverhalten
- Hinzufügen einer Anmerkung zu Strukturen und Klassen
- Hinzufügen einer Anmerkung zum Sperrverhalten
- Angeben, wann und wo eine Anmerkung gültig ist
- Empfohlene Vorgehensweisen und Beispiele