Systeminterne FunktionenIntrinsic Functions

Ein Ausdruck in SAL kann ein C/C++-Ausdruck sein, vorausgesetzt, dass es sich um einen Ausdruck handelt, der keine Nebeneffekte hat – z. b. + +,--, und Funktionsaufrufe, die alle Nebeneffekte in diesem Kontext haben.An expression in SAL can be a C/C++ expression provided that it is an expression that does not have side effects—for example, ++, --, and function calls all have side effects in this context. SAL bietet jedoch einige Funktions ähnliche Objekte und einige reservierte Symbole, die in SAL-Ausdrücken verwendet werden können.However, SAL does provide some function-like objects and some reserved symbols that can be used in SAL expressions. Diese werden als intrinsische Funktionen bezeichnet.These are referred to as intrinsic functions.

UniversellGeneral Purpose

Die folgenden Anmerkungen in der instraninsic-Funktion bieten Allgemeines Hilfsprogramm für SAL.The following instrinsic function annotations provide general utility for SAL.

AnmerkungAnnotation BESCHREIBUNGDescription
_Curr_ Ein Synonym für das Objekt, das gerade mit Anmerkungen versehen wird.A synonym for the object that is currently being annotated. Wenn die-Anmerkung _At_ verwendet wird, _Curr_ ist der gleiche wie der erste Parameter für _At_ .When the _At_ annotation is in use, _Curr_ is the same as the first parameter to _At_. Andernfalls ist es der-Parameter oder die gesamte Funktion/der gesamte Rückgabewert, mit der die Anmerkung lexikalisch verknüpft ist.Otherwise, it is the parameter or the entire function/return value with which the annotation is lexically associated.
_Inexpressible_(expr) Drückt eine Situation aus, bei der die Größe eines Puffers zu komplex ist, indem ein Anmerkung-Ausdruck verwendet wird, z. –. wenn er durch Scannen eines Eingabe Datasets und anschließendes zählen ausgewählter Elemente berechnet wird.Expresses a situation where the size of a buffer is too complex to represent by using an annotation expression—for example, when it is computed by scanning an input data set and then counting selected members.
_Nullterm_length_(param) param die Anzahl der Elemente im Puffer bis zu einem NULL-Terminator.param is the number of elements in the buffer up to but not including a null terminator. Sie kann auf einen beliebigen Puffer eines nicht aggregierten, nicht-void-Typs angewendet werden.It may be applied to any buffer of non-aggregate, non-void type.
_Old_(expr) Wenn Sie in Vorbedingung ausgewertet wird, wird _Old_ der Eingabe Wert von zurückgegeben expr .When it is evaluated in precondition, _Old_ returns the input value expr. Wenn Sie in der nach Bedingung ausgewertet wird, wird der Wert zurück expr gegeben, da er in Vorbedingung ausgewertet worden wäre.When it is evaluated in post-condition, it returns the value expr as it would have been evaluated in precondition.
_Param_(n) Der n th-Parameter für eine Funktion, der von 1 bis, und eine ganzzahlige ganzzahlige n n Konstante ist.The nth parameter to a function, counting from 1 to n, and n is a literal integral constant. Wenn der-Parameter den Namen hat, ist diese Anmerkung identisch mit dem Zugriff auf den Parameter über den Namen.If the parameter is named, this annotation is identical to accessing the parameter by name. Hinweis: n kann auf die Positions Parameter verweisen, die durch Auslassungs Zeichen definiert werden, oder kann in Funktionsprototypen verwendet werden, bei denen keine Namen verwendet werden. Note: n may refer to the positional parameters that are defined by an ellipsis, or may be used in function prototypes where names are not used.
return Das reservierte C/C++-Schlüsselwort return kann in einem SAL-Ausdruck verwendet werden, um den Rückgabewert einer Funktion anzugeben.The C/C++ reserved keyword return can be used in a SAL expression to indicate the return value of a function. Der Wert ist nur im Post-Zustand verfügbar. Es handelt sich hierbei um einen Syntax Fehler, der im vorab Zustand verwendet werden kann.The value is only available in post state; it is a syntax error to use it in pre state.

Spezifisches für ZeichenfolgenString Specific

Die folgenden intrinsischen Funktions Anmerkungen ermöglichen die Bearbeitung von Zeichen folgen.The following intrinsic function annotations enable manipulation of strings. Alle vier dieser Funktionen dienen dem gleichen Zweck: zum Zurückgeben der Anzahl von Elementen des Typs, der vor einem NULL-Terminator gefunden wurde.All four of these functions serve the same purpose: to return the number of elements of the type that is found before a null terminator. Die Unterschiede sind die Arten von Daten in den Elementen, auf die verwiesen wird.The differences are the kinds of data in the elements that are referred to. Beachten Sie, dass Sie die-Anmerkung _Nullterm_length_(param) aus dem vorherigen Abschnitt verwenden können, wenn Sie die Länge eines null-terminierten Puffers angeben möchten, der nicht aus Zeichen besteht.Note that if you want to specify the length of a null-terminated buffer that is not composed of characters, use the _Nullterm_length_(param) annotation from the previous section.

AnmerkungAnnotation BESCHREIBUNGDescription
_String_length_(param) param die Anzahl der Elemente in der Zeichenfolge bis zu einem NULL-Terminator.param is the number of elements in the string up to but not including a null terminator. Diese Anmerkung ist für Zeichen folgen Typen reserviert.This annotation is reserved for string-of-character types.
strlen(param) param die Anzahl der Elemente in der Zeichenfolge bis zu einem NULL-Terminator.param is the number of elements in the string up to but not including a null terminator. Diese Anmerkung ist für die Verwendung in Zeichen Arrays reserviert und ähnelt der C-Lauf Zeitfunktion " strinlen ()".This annotation is reserved for use on character arrays and resembles the C Runtime function strlen().
wcslen(param) param die Anzahl der Elemente in der Zeichenfolge bis zu einem NULL-Terminator (ohne Angabe).param is the number of elements in the string up to (but not including) a null terminator. Diese Anmerkung ist für die Verwendung von breit Zeichen Arrays reserviert und ähnelt der C-Lauf Zeitfunktion wcslen ().This annotation is reserved for use on wide character arrays and resembles the C Runtime function wcslen().

Siehe auchSee also