Vnitřní funkce

Výraz v SAL může být výraz jazyka C/C++ za předpokladu, že se jedná o výraz, který nemá vedlejší účinky – například ++, --, a volání funkcí mají v tomto kontextu vedlejší účinky. SAL ale poskytuje některé objekty jako funkce a některé rezervované symboly, které lze použít ve výrazech SAL. Tyto funkce se označují jako vnitřní funkce.

Pro obecné účely

Následující anotace instrinsické funkce poskytují obecný nástroj pro SAL.

Poznámka Popis
_Curr_ Synonymum pro objekt, který je právě anotován. Když _At_ se anotace používá, _Curr_ je stejný jako první parametr pro _At_ . V opačném případě se jedná o parametr nebo celou funkci nebo návratovou hodnotu, ke které je anotace lexikálně přidružená.
_Inexpressible_(expr) Vyjadřuje situaci, kdy je velikost vyrovnávací paměti příliš složitá na to, aby ji reprezentoval výraz poznámek – například když se vypočítá tak, že se naskenuje vstupní datová sada a pak počítá vybrané členy.
_Nullterm_length_(param) param je počet prvků ve vyrovnávací paměti až do , ale bez zahrnutí ukončovací znaky null. Můžete ji použít na libovolnou vyrovnávací paměť ne agregovaného typu bez void.
_Old_(expr) Když se vyhodnocuje v předběžné podmínce, _Old_ vrátí vstupní hodnotu expr . Při vyhodnocení v podmínce vrátí hodnotu , expr protože by byla vyhodnocena v předběžné podmínce.
_Param_(n) Parametr n th funkce počítán od 1 do n , a je literálovou n celočíselnou konstantou. Pokud má parametr název , je tato poznámka stejná jako přístup k parametru podle názvu. Poznámka: může odkazovat na poziční parametry, které jsou definovány třemi tečkami nebo mohou být použity v prototypech funkce, kde se názvy nepoužíly.
return Vyhrazené klíčové slovo C/C++ lze použít ve výrazu SAL k označení return návratové hodnoty funkce. Hodnota je k dispozici pouze ve stavu post. Jedná se o chybu syntaxe, která se používá v předběžném stavu.

Specifické pro řetězec

Následující poznámky vnitřní funkce umožňují manipulaci s řetězci. Všechny čtyři z těchto funkcí mají stejný účel: vrátit počet prvků typu nalezených před ukončením hodnoty null. Rozdíly jsou druhy dat v prvcích, na které se odkazuje. Všimněte si, že pokud chcete zadat délku vyrovnávací paměti ukončené hodnotou null, která se neskládá ze znaků, použijte poznámku _Nullterm_length_(param) z předchozí části.

Poznámka Popis
_String_length_(param) param je počet prvků v řetězci až do , ale bez zahrnutí ukončovací znak null. Tato poznámka je vyhrazená pro typy řetězců znaků.
strlen(param) param je počet prvků v řetězci až do , ale bez zahrnutí ukončovací znak null. Tato poznámka je vyhrazená pro použití v polích znaků a podobá se funkci modulu runtime jazyka C strlen().
wcslen(param) param je počet prvků v řetězci až do (ale bez zahrnutí) ukončovací znak null. Tato poznámka je vyhrazená pro použití v širokých polích znaků a podobá se funkci modulu runtime jazyka C wcslen().

Viz také