Freigeben über


Hinzufügen einer Anmerkung zum Funktionsverhalten

Zusätzlich zum Kommentieren von Funktionsparameter und Rückgabewerte, können Sie Eigenschaften der Ganzfunktion kommentieren.

Funktionsanmerkungen

Die folgenden Anmerkungen gelten für die Funktion als ganzes zu und beschreiben, wie diese sich verhält, oder welche sie erwartet, um ausgeführt zu sein.

Anmerkung

Beschreibung

_Called_from_function_class_(name)

Die nicht eigenständig zu; sondern ein mit der _When_ - Anmerkung verwendete Prädikat.Weitere Informationen finden Sie unter Angeben, wann und wo eine Anmerkung gültig ist.

Der Parameter name ist eine beliebige Zeichenfolge, die auch in einer _Function_class_ in der Anmerkung Deklaration mehrerer Funktionen wird. _Called_from_function_class_ gibt einen Wert ungleich 0 (null) zurück, wenn die Funktion, die Nur analysiert wird, hinzugefügt wird, indem Sie _Function_class_ verwenden, der den gleichen Wert name enthält; andernfalls gibt er null zurück.

_Check_return_

Kommentiert einen Rückgabewert und Zustände, dass der Aufrufer ihn überprüfen soll.Der Prüfer meldet einen Fehler, wenn die Funktion in einem ungültigen Kontext aufgerufen wird.

_Function_class_(name)

Der Parameter name ist eine beliebige Zeichenfolge, die vom Benutzer festgelegt wird. Es ist in einem Namespace, der von anderen Namespaces unterscheidet.Eine Funktion, ein Funktionszeiger oder-höchst ein usefully-a werden als Funktionszeigertyp gehört einer oder mehreren Funktionsklassen festgelegt werden.

_Raises_SEH_exception_

Kommentiert eine Funktion, die immer eine Quellcode für Handler (SEH)- Ausnahme der strukturierten Ausnahmehandlers je nach _When_ und _On_failure_ Zuständen auslöst.Weitere Informationen finden Sie unter Angeben, wann und wo eine Anmerkung gültig ist.

_Maybe_raises_SEH_exception_

Kommentiert eine Funktion, die sich optional SEH Ausnahme je nach _When_ und _On_failure_ Zuständen soll.

_Must_inspect_result_

Kommentiert jeden Ausgabewert, einschließlich den Rückgabewert, Parameter und globalen Werten. Der Analyzer meldet einen Fehler, wenn der Wert im Objekt mit Anmerkungen anschließend nicht überprüft wird. "Überprüfung" enthält, ob sie in einem bedingten Ausdruck verwendet wird, zu einem Ausgabeparameter oder global zugewiesen wird, oder wird als Parameter übergeben. Für Rückgabewerte bedeutet _Must_inspect_result__Check_return_.

_Use_decl_annotations_

Kann auf eine Funktionsdefinition (auch als Funktionsrumpf) anstelle der Liste von Anmerkungen im Header verwendet werden. Wenn _Use_decl_annotations_ verwendet wird, sind die Anmerkungen, die in einer im Gültigkeitsbereich befindlichen Header für die gleiche Funktion werden, verwendet, als ob ihnen auch die Definition vorhanden sind, die die Anmerkungen _Use_decl_annotations_ verfügt.

Erfolg/Fehler-Anmerkungen

Eine Funktion kann fehlschlagen und wenn ja, unterscheiden sich die Ergebnisse unvollständig sein oder von den Ergebnissen, wenn die Funktion folgt. Mit Anmerkungen in der folgenden Liste liefern Methoden, das Fehlerverhalten auszudrücken. Um diese Anmerkungen zu verwenden, müssen Sie es ermöglichen den erfolgreichen Verlauf festzustellen; Daher ist eine Anmerkung _Success_ erforderlich. Beachten Sie, dass NTSTATUS und HRESULT bereits eine _Success_ Anmerkung haben, in die sie erstellt wird; Wenn Sie jedoch der eigenen _Success_ Anmerkung auf NTSTATUS oder HRESULT angeben, überschreibt dieser die integrierte Anmerkung.

Anmerkung

Beschreibung

_Always_(anno_list)

Entspricht anno_list _On_failure_(anno_list); das heißt, gelten die Anmerkungen in anno_list, dass die Funktion erfolgreich.

_On_failure_(anno_list)

Um nur wenn auch _Success_, um verwendet wird Funktion-jedes explizit zu kommentieren oder implizit von _Return_type_success_ in einer Typdefinition verwendet werden.Wenn die _On_failure_ Anmerkung auf einem Funktionsparameter oder einem Rückgabewert vorhanden ist, verhält alle Anmerkungen in anno_list (anno), als wären sie als _When_(!expr, anno) codiert wurde, in dem expr der Parameter zur erforderlichen _Success_ Anmerkung ist.Dies bedeutet, dass die implizite Anwendung von _Success_ auf alle Nachbedingungen nicht _On_failure_ gilt.

_Return_type_success_(expr)

Kann auf eine Typ angewendet werden.Gibt an, dass alle Funktionen, die diesen Typ zurückgeben und nicht explizit _Success_, gekennzeichnet sind, als ob ihnen _Success_(expr) haben._Return_type_success_ kann nicht auf eine Funktion oder einer Funktionszeiger-typedef verwendet werden.

_Success_(expr)

expr ist ein Ausdruck, der einen R-Wert führt.Wenn die _Success_ Anmerkung in einer Funktionsdeklaration oder eine Definition vorhanden ist, verhält sich jede Anmerkung (anno) in der Funktion und in der Nachbedingung, als wären sie als _When_(expr, anno) codiert wurde.Die Anmerkung ist _Success_ nur auf eine Funktion, nicht auf den Parameter oder als Rückgabetyp verwendet werden.Es kann eine _Success_ Anmerkung für eine Funktion höchstens geben, und kann nicht in einem _When_, _At_ oder _Group_ sein.Weitere Informationen finden Sie unter Angeben, wann und wo eine Anmerkung gültig ist.

Siehe auch

Referenz

Hinzufügen einer Anmerkung zu Funktionsparametern und Rückgabewerten

Hinzufügen einer Anmerkung zu Strukturen und Klassen

Hinzufügen einer Anmerkung zum Sperrverhalten

Angeben, wann und wo eine Anmerkung gültig ist

Systeminterne Funktionen

Empfohlene Vorgehensweisen und Beispiele (SAL)

Konzepte

Einführung in SAL

Weitere Ressourcen

Verwenden von SAL-Anmerkungen zum Reduzieren von C/C++-Codefehlern