Anotace chování funkce
Kromě přidávání poznámek k parametrům funkcea vráceným hodnotám můžete anotovat vlastnosti celé funkce.
Poznámky k funkcím
Následující poznámky platí pro funkci jako celek a popisují, jak se chová nebo co očekává jako pravdivé.
| Poznámka | Popis |
|---|---|
_Called_from_function_class_(name) |
Není určené k tomu, aby byl samostatný; Místo toho se jedná o predikát, který se má použít s _When_ poznámkou. Další informace naleznete v části Specifying When and Where annotation Applies.Parametr je libovolný řetězec, který se také zobrazí name v _Function_class_ anotaci v deklaraci některých funkcí. _Called_from_function_class_ vrátí nenulovou hodnotu, pokud je funkce, která je aktuálně analyzována, anotována pomocí , která má stejnou hodnotu , v opačném případě _Function_class_name vrátí nulu. |
_Check_return_ |
Anotuje návratovou hodnotu a uvádí, že ji má volající zkontrolovat. Nástroj pro kontrolu hlásí chybu, pokud je funkce volána v kontextu objektu void. |
_Function_class_(name) |
Parametr name je libovolný řetězec, který je určen uživatelem. Existuje v oboru názvů, který se liší od jiných oborů názvů. Funkce, ukazatel na funkci nebo –nejužitečnější – typ ukazatele funkce může být určen jako patřící do jedné nebo více tříd funkcí. |
_Raises_SEH_exception_ |
Anotuje funkci, která vždy vyvolá výjimku strukturované obslužné rutiny výjimky (SEH) v závislosti na _When__On_failure_ podmínkách a . Další informace naleznete v části Specifying When and Where annotation Applies. |
_Maybe_raises_SEH_exception_ |
Anotuje funkci, která může volitelně vyvolat výjimku SEH v závislosti na _When_ podmínkách _On_failure_ a . |
_Must_inspect_result_ |
Anotuje libovolnou výstupní hodnotu, včetně návratové hodnoty, parametrů a globálních hodnot. Analyzátor hlásí chybu, pokud hodnota v objektu s poznámkami není následně zkontrolována. "Kontrola" zahrnuje, jestli se používá v podmíněném výrazu, je přiřazená k výstupnímu parametru nebo globálnímu, nebo se předává jako parametr. Pro návratové hodnoty _Must_inspect_result_ implikuje _Check_return_ . |
_Use_decl_annotations_ |
Lze použít u definice funkce (označované také jako tělo funkce) místo seznamu poznámek v hlavičce. Při použití se poznámky, které se zobrazují v záhlaví v oboru pro stejnou funkci, používají, jako kdyby byly také přítomny v definici, která _Use_decl_annotations__Use_decl_annotations_ má poznámku. |
Poznámky k úspěchu/neúspěchu
Funkce může selhat a v případě úspěchu může být její výsledky neúplné nebo se od výsledků lišit. Poznámky v následujícím seznamu poskytují způsoby, jak vyjádřit chování při selhání. Pokud chcete tyto poznámky použít, musíte jim povolit určení úspěchu. Proto je _Success_ vyžadována poznámka. Všimněte si, že a už mají v sobě integrovanou poznámku. Pokud ale zadáte vlastní poznámku v nebo , přepíše integrovanou NTSTATUSHRESULT_Success__Success_NTSTATUSHRESULT poznámku.
| Poznámka | Popis |
|---|---|
_Always_(anno_list) |
Odpovídá , to znamená, že poznámky v platí bez ohledu na anno_list _On_failure_(anno_list) to, anno_list zda je funkce úspěšná. |
_On_failure_(anno_list) |
Chcete-li použít pouze v případě, že se také používá k anotace funkce – buď explicitně, nebo implicitně prostřednictvím _Success__Return_type_success_ v typedef. Pokud je u parametru funkce nebo návratové hodnoty přítomna poznámka, chová se každá anotace v _On_failure_ objektu (anno) stejně, jako by byla kódována jako , kde je parametr požadované anno_list_When_(!expr, anno)expr_Success_ poznámky. To znamená, že implicitní použití na _Success_ všechny post-conditions se nevztahuje na _On_failure_ . |
_Return_type_success_(expr) |
Lze použít pro definici typedef. Označuje, že všechny funkce, které vracejí tento typ a nemají explicitně, jsou _Success_ anotované, jako by měly _Success_(expr) . _Return_type_success_ nelze použít pro funkci nebo definici typedef ukazatele funkce. |
_Success_(expr) |
expr je výraz, který dává hodnotu rvalue. Pokud je v deklaraci nebo definici funkce anotace přítomna, bude se každá poznámka ( ) ve funkci a v post condition chovat, jako by byla _Success_anno kódována jako _When_(expr, anno) . Anotaci lze použít pouze pro funkci, nikoli pro _Success_ její parametry nebo návratový typ. U funkce může být alespoň jedna poznámka a nemůže být v žádném souboru _Success__When_ , nebo _At__Group_ . Další informace naleznete v části Specifying When and Where annotation Applies. |
Viz také
- Použití poznámek SAL k snížení míry výskytu závad kódu C/C++
- Porozumění SAL
- Zadávání poznámek k parametrům funkcí a návratovým hodnotám
- Zadávání poznámek ke strukturám a třídám
- Zadávání poznámek o chování při zamykání
- Určení, kdy a kde se má poznámka použít
- Vnitřní funkce
- Doporučené postupy a příklady