Megosztás a következőn keresztül:


A függvény viselkedésének megjegyzésekkel való ellátása

A függvényparaméterek és a visszaadott értékek megjegyzése mellett a teljes függvény tulajdonságait is megjegyzésekkel láthatja el.

Függvény annotációk

A következő széljegyzetek a függvény egészére vonatkoznak, és ismertetik, hogyan viselkedik, vagy mit vár el az igaztól.

Jegyzetelés Leírás
_Called_from_function_class_(name) Nem önállónak szánták; helyett ez egy predikátum, amelyet a _When_ széljegyzethez kell használni. További információ: A széljegyzetek alkalmazásának helye és ideje.

A name paraméter egy tetszőleges sztring, amely egyes függvények deklarációjában is megjelenik egy _Function_class_ annotációban. _Called_from_function_class_ nem nulla értéket ad vissza, ha az aktuálisan elemzett függvény meg van jegyezve a(z) _Function_class_ használatával, amelynek ugyanaz az értéke, mint a(z) name; ellenkező esetben nulla értéket ad vissza.
_Check_return_ Megjegyzést fűz egy visszatérési értékhez, és azt állítja, hogy a hívónak meg kell vizsgálnia. Az ellenőrző hibát jelez, ha a függvény üres környezetben van meghívva.
_Function_class_(name) A name paraméter egy tetszőleges sztring, amelyet a felhasználó jelöl ki. Olyan névtérben létezik, amely különbözik a többi névtértől. Egy függvény, függvénymutató vagy – ami a legléremesebb – egy függvénymutató-típus egy vagy több függvényosztályhoz tartozhat.
_Raises_SEH_exception_ Megjelöl egy függvényt, amely mindig strukturált kivételkezelő (SEH) kivételt hoz létre, _When_ és _On_failure_ feltételek alapján. További információ: A széljegyzetek alkalmazásának helye és ideje.
_Maybe_raises_SEH_exception_ Annotál egy függvényt, amely opcionálisan SEH-kivételt okozhat, a _When_ és _On_failure_ feltételek szerint.
_Must_inspect_result_ Megjegyzést fűz a kimeneti értékekhez, beleértve a visszatérési értéket, a paramétereket és a globális értékeket. Az elemző hibát jelez, ha a jegyzetekkel ellátott objektum értékét később nem vizsgálják meg. A "Vizsgálat" magában foglalja, hogy feltételes kifejezésben használják-e, kimeneti paraméterhez vagy globálishoz van-e hozzárendelve, vagy paraméterként van-e átadva. A visszatérési értékek esetén _Must_inspect_result__Check_return_-et jelent.
_Use_decl_annotations_ Használható függvénydefinícióban (más néven függvénytörzsben) a fejléc széljegyzeteinek listája helyett. A _Use_decl_annotations_ használat során az ugyanazon függvény hatókörön belüli fejlécén megjelenő széljegyzeteket a rendszer úgy használja, mintha a széljegyzetet tartalmazó _Use_decl_annotations_ definícióban is szerepelnének.

Sikeres/sikertelen széljegyzetek

A függvények sikertelenek lehetnek, és ha igen, az eredmények hiányosak lehetnek, vagy eltérhetnek az eredményektől, ha a függvény sikeres. Az alábbi lista széljegyzetei módot nyújtanak a hiba viselkedésének kifejezésére. Ezeknek a széljegyzeteknek a használatához engedélyeznie kell őket a sikeresség megállapításához; _Success_ ezért széljegyzetre van szükség. Figyelje meg, hogy NTSTATUS és HRESULT már rendelkezik _Success_ beépített széljegyzettel; ha azonban saját _Success_ széljegyzetet ad meg NTSTATUS-re vagy HRESULT-re, az felülbírálja a beépített széljegyzetet.

Jegyzetelés Leírás
_Always_(anno_list) Egyenértékű a anno_list _On_failure_(anno_list); azaz a anno_list jegyzetei alkalmazandók, függetlenül attól, hogy a függvény sikeres vagy sem.
_On_failure_(anno_list) Csak akkor használható, ha a _Success_ a függvényt is annotálja – akár explicit módon, akár implicit módon egy typedefen keresztül a _Return_type_success_ segítségével. Ha a _On_failure_ annotáció jelen van egy függvény paraméteren vagy visszatérési értéken, minden annotáció a anno_list-ben úgy viselkedik, mintha _When_(!expr, anno)-ként lett volna kódolva, ahol expr a szükséges _Success_ annotáció paramétere. Ez azt jelenti, hogy az összes utó-feltétel hallgatólagos alkalmazása _Success_ nem vonatkozik _On_failure_-re.
_Return_type_success_(expr) Alkalmazható egy típusdefre. Azt jelzi, hogy minden olyan függvény, amely ezt a típust adja vissza, és nincs kifejezetten _Success_ megadva, úgy van jelölve, mintha _Success_(expr) lenne. _Return_type_success_ nem használható függvényen vagy függvénymutató-típusdefen.
_Success_(expr) expr egy olyan kifejezés, amely egy rvalue értéket ad. Ha a _Success_ annotáció jelen van egy függvénydeklaráción vagy -definíción, a függvényen és az utófeltételben lévő összes annotáció (anno) úgy viselkedik, mintha _When_(expr, anno) kódként lenne megadva. A _Success_ széljegyzet csak egy függvényen használható, a paramétereken és a visszatérési típuson nem. Egy függvény legfeljebb egy _Success_ széljegyzetet tartalmazhat, és nem szerepelhet egyikben sem _When_, _At_sem _Group_. További információ: A széljegyzetek alkalmazásának helye és ideje.

Lásd még