Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett uttryck i SAL kan vara ett C/C++-uttryck förutsatt att det är ett uttryck som inte har biverkningar, till exempel ++, --, och funktionsanrop har alla biverkningar i den här kontexten. SAL tillhandahåller dock vissa funktionsliknande objekt och vissa reserverade symboler som kan användas i SAL-uttryck. Dessa kallas för inbyggda funktioner.
Generell användning
Följande instrinsiska funktionsanteckningar ger allmän nytta för SAL.
| Anteckning | Beskrivning |
|---|---|
_Curr_ |
En synonym för det objekt som för närvarande kommenteras. När anteckningen _At_ används _Curr_ är samma som den första parametern till _At_. Annars är det parametern eller hela funktionen/returvärdet som anteckningen är lexikalt associerad med. |
_Inexpressible_(expr) |
Uttrycker en situation där storleken på en buffert är för komplex för att representeras med hjälp av ett anteckningsuttryck, till exempel när den beräknas genom att skanna en indatauppsättning och sedan räkna valda medlemmar. |
_Nullterm_length_(param) |
param är antalet element i bufferten upp till men inte inklusive ett nulltecken. Den kan tillämpas på alla buffertar av icke-aggregerad, icke-void-typ. |
_Old_(expr) |
När den utvärderas i förhandsvillkor _Old_ returnerar indatavärdet expr. När det utvärderas i eftervillkor returnerar det värdet expr eftersom det skulle ha utvärderats i förhandsvillkor. |
_Param_(n) |
Den n:e parameter i en funktion, räknad från 1 till n, och n är en bokstavlig heltalskonstant. Om parametern har ett namn, är den här anteckningen identisk med åtkomsten till parametern med namnet.
Not:n kan referera till de positionsparametrar som definieras av en ellips eller kan användas i funktionsprototyper där namn inte används. |
return |
Det reserverade nyckelordet return C/C++ kan användas i ett SAL-uttryck för att ange returvärdet för en funktion. Värdet är endast tillgängligt i efterläge; det är ett syntaxfel att använda det i föreläge. |
Strängspecifik
Följande inbyggda funktionsanteckningar möjliggör manipulering av strängar. Alla fyra av dessa funktioner har samma syfte: att returnera antalet element av den typ som hittas före en null-avslutare. Skillnaderna är de typer av data i de element som refereras till. Observera att om du vill ange längden på en null-avslutad buffert som inte består av tecken använder du anteckningen _Nullterm_length_(param) från föregående avsnitt.
| Anteckning | Beskrivning |
|---|---|
_String_length_(param) |
param är antalet element i strängen upp till men inte inklusive ett nulltecken. Den här anteckningen är reserverad för teckensträngstyper. |
strlen(param) |
param är antalet element i strängen upp till men inte inklusive ett nulltecken. Den här kommentaren är reserverad för användning på teckenmatriser och liknar C Runtime-funktionen strlen(). |
wcslen(param) |
param är antalet element i strängen upp till (men inte inklusive) en null-avslutare. Den här kommentaren är reserverad för användning på breda teckenmatriser och liknar funktionen C Runtime wcslen(). |