Angeben, wann und wo eine Anmerkung gültig ist
Wenn eine Anmerkung bedingt ist, muss sie möglicherweise andere Anmerkungen, die dem Analyzer anzugeben.Wenn eine Funktion eine Variable verfügt, die entweder synchron oder asynchron sein kann, verhält sich die Funktion, wie folgt: Im synchronen Fall folgt sie immer schließlich, aber im asynchronen Fall meldet sie ein Fehler, wenn sie nicht sofort ausführen kann.Wenn die Funktion synchron aufgerufen wird, stellt das Überprüfen des Ergebniswerts keinen Wert an den Codeanalyzer bereit, da sie nicht zurückgegeben würde.Wenn die Funktion asynchron aufgerufen wird und das Ergebnis der Funktion nicht überprüft wird, kann ein ernster Fehler auftreten.Dieses Beispiel veranschaulicht eine Situation, in der Sie _When_ verwenden könnten, das später in diesem Anmerkung-beschrieben wurde Artikel-zu aktivieren, Überprüfung.
Strukturelle Anmerkungen
So steuern, wann und wo Anmerkungen gelten, die folgenden strukturellen Anmerkungen verwenden Sie.
Anmerkung |
Beschreibung |
---|---|
_At_(expr, anno-list) |
expr ist ein Ausdruck, der als l-Wert ergibt.Die Anmerkungen in anno-list werden auf das Objekt angewendet, das von expr genannt wird.Für jede Anmerkungen in anno-list, wird expr in der Vorbedingung, wenn die Anmerkung in der Vorbedingung interpretiert wird, und in der Nachbedingung interpretiert, wenn die Anmerkung in der Nachbedingung interpretiert wird. |
_At_buffer_(expr, iter, elem-count, anno-list) |
expr ist ein Ausdruck, der als l-Wert ergibt.Die Anmerkungen in anno-list werden auf das Objekt angewendet, das von expr genannt wird.Für jede Anmerkungen in anno-list, wird expr in der Vorbedingung, wenn die Anmerkung in der Vorbedingung interpretiert wird, und in der Nachbedingung interpretiert, wenn die Anmerkung in der Nachbedingung interpretiert wird. iter ist der Name einer Variablen, die der Anmerkung festgelegt wird (einschließlich anno-list).iter verfügt über einen impliziten Typ long.Identisch mit Variablen in einem einschließenden Bereich werden aus der Auswertung ausgeblendet. elem-count ist ein Ausdruck, der eine ganze Zahl ausgewertet wird. |
_Group_(anno-list) |
Alle Anmerkungen in anno-list betrachtet werden, jeden Qualifizierer verfügen, der auf die Gruppenanmerkung gilt, die jeder Anmerkung angewendet wird. |
_When_(expr, anno-list) |
expr ist ein Ausdruck, der zu bool konvertiert werden kann.Wenn er (true) ungleich 0 (null) ist, die Anmerkungen, die in anno-list gelten als anwendbar angegeben werden. Standardmäßig für jede Anmerkungen in anno-list, wird expr wie mithilfe der Eingabewerte, wenn die Anmerkung eine Vorbedingung ist, und wie mit der Ausgabewerte interpretiert, wenn die Anmerkung eine Nachbedingung ist.Um den Standard zu überschreiben, können Sie die _Old_ systeminterne Funktion verwenden wenn Sie eine Nachbedingung auswerten dass Eingabewerte verwendet werden sollen.
Hinweis
Verschiedene Anmerkungen würden als Folge der Anwendung von _When_ wenn ein änderbares Beispiel werden, *pLength aktiviert möglicherweise - wird eingesetzt, da das Ergebnis ausgewertete möglicherweise expr in der Vorbedingung aus dem ausgewerteten Ergebnis in der Nachbedingung unterscheidet.
|
Siehe auch
Referenz
Hinzufügen einer Anmerkung zu Funktionsparametern und Rückgabewerten
Hinzufügen einer Anmerkung zum Funktionsverhalten
Hinzufügen einer Anmerkung zu Strukturen und Klassen
Hinzufügen einer Anmerkung zum Sperrverhalten
Empfohlene Vorgehensweisen und Beispiele (SAL)
Konzepte
Weitere Ressourcen
Verwenden von SAL-Anmerkungen zum Reduzieren von C/C++-Codefehlern