Określanie warunków pojawiania się adnotacji
Adnotacja jest warunkowe, może wymagać innych adnotacji, aby określić, że do analizatora. Na przykład, jeśli funkcja jest zmienna, która może być synchroniczna lub asynchroniczna, funkcja zachowuje się w następujący sposób: W przypadku synchroniczne to zawsze ostatecznie powiedzie się, ale w tym przypadku asynchronicznych to zgłasza błąd jeśli nie uda się natychmiast.Gdy funkcja jest wywoływana synchronicznie, sprawdzanie wartość wyniku zapewnia żadnej wartości do analizatora kodu, ponieważ nie byłby on zwrócony. Jednak gdy funkcja jest wywoływana asynchronicznie, a wynik funkcji nie jest zaznaczone, może wystąpić po poważnym błędzie.Ten przykład ilustruje sytuację, w której można użyć _When_ adnotacji — opisane w dalszej części tego artykułu — włączone sprawdzanie.
Adnotacje strukturalne
Aby kontrolować, kiedy i gdzie stosuje się adnotacje, należy użyć następujących adnotacji strukturalnych.
Adnotacja |
Opis |
---|---|
_At_(expr, anno-list) |
exprto wyrażenie zwracające lvalue.Adnotacje w anno-list są stosowane do obiektu o nazwie expr.Dla każdej adnotacji w anno-list, expr jest interpretowana w warunek wstępny, jeżeli adnotacja jest interpretowana w warunek wstępny, a jeśli warunek po wprowadzeniu adnotacji jest interpretowana w stanie po zakończeniu. |
_At_buffer_(expr, iter, elem-count, anno-list) |
exprto wyrażenie zwracające lvalue.Adnotacje w anno-list są stosowane do obiektu o nazwie expr.Dla każdej adnotacji w anno-list, expr jest interpretowana w warunek wstępny, jeżeli adnotacja jest interpretowana w warunku wstępnego, a jeśli warunek po wprowadzeniu adnotacji jest interpretowana w stanie po zakończeniu. iterjest nazwą zmiennej, która obejmuje zasięgiem adnotacji (zawierający od anno-list).iter jest niejawnego typu long.Identycznie nazwane zmienne w dowolnym zamkniętym zakresie są ukryte przed oceną. elem-count to wyrażenie oceniane jako liczba całkowita. |
_Group_(anno-list) |
Adnotacje w anno-list wszystkie uważa się za wszelkie kwalifikatora, którego dotyczy adnotacja grupy jest stosowany do każdej adnotacji. |
_When_(expr, anno-list) |
expr to wyrażenie, które można przekonwertować do wartości bool.Gdy jest różna od zera (true), adnotacje, które zostały określone w anno-list są uznawane za mające zastosowanie. Domyślnie dla każdej adnotacji w anno-list, expr jest interpretowana jako wartość przy użyciu wartości wejściowych, jeśli adnotacja jest warunkiem wstępnym i jak za pomocą wartości wyjściowych, jeżeli adnotacja jest po wprowadzeniu warunek.Aby zastąpić ustawienia domyślne, można użyć _Old_ wewnętrznych, weryfikując po wprowadzeniu warunek, aby wskazać, że należy używać wartości wejściowych.
|
Zobacz też
Informacje
Dodawanie adnotacji do parametrów funkcji i zwracanych wartości
Zachowanie funkcji dodawania adnotacji
Dodawanie adnotacji struktur i klas
Dodawanie adnotacji do zachowania blokującego
Najlepsze praktyki i przykłady (SAL)
Koncepcje
Inne zasoby
Korzystanie z adnotacji SAL w celu redukowanie defektów kodu C/C++