Udostępnij za pośrednictwem


Zachowanie funkcji dodawania adnotacji

Oprócz adnotowanie Parametry funkcji i zwracają wartości, można dodać adnotacje właściwości całej funkcji.

Adnotacje funkcji

Następujące adnotacje stosowane do funkcji jako całości i opisu jak zachowuje się lub oczekuje się prawdą.

Adnotacja

Opis

_Called_from_function_class_(name)

Nie przeznaczone do samodzielnego; Zamiast tego jest predykat ma być używany z _When_ adnotacji.Aby uzyskać więcej informacji, zobacz Określanie warunków pojawiania się adnotacji.

name Parametr jest dowolny ciąg, który pojawia się również w _Function_class_ adnotacji w deklaracji z niektórych funkcji. _Called_from_function_class_Zwraca wartość różną od zera, jeśli funkcja, która jest właśnie analizowane jest odnotowany za pomocą _Function_class_ który ma taką samą wartość, z name; w przeciwnym razie zwraca zero.

_Check_return_

Opisz wartości zwracanej i stwierdza, że obiekt wywołujący powinien zapoznać się z nim.Moduł sprawdzania zgłasza błąd, jeśli funkcja jest wywoływana w kontekście void.

_Function_class_(name)

name Parametr jest dowolny ciąg określony przez użytkownika.Istnieje w obszarze nazw, która różni się od innych obszarach nazw.Funkcja, wskaźnik funkcji, lub — najbardziej użyteczny — typ wskaźnika funkcji może zostać wyznaczony jako należące do jednej lub kilku klas funkcji.

_Raises_SEH_exception_

Opisz funkcję, która zawsze wzbudza wyjątek strukturalnej obsługi wyjątków strukturalnych, podlegają _When_ i _On_failure_ warunki.Aby uzyskać więcej informacji, zobacz Określanie warunków pojawiania się adnotacji.

_Maybe_raises_SEH_exception_

Opisz funkcję, która opcjonalnie może wzbudzić wyjątek SEH zastrzeżeniem _When_ i _On_failure_ warunki.

_Must_inspect_result_

Oznacza adnotacją dowolną wartość wyjściową, włączając wartość zwracaną, parametry i zmienne globalne.Analizator zgłasza błąd, jeśli wartość w adnotacjami obiektu nie jest następnie poddany. "Inspekcja"obejmuje, czy to jest używane wyrażenie warunkowe, jest przypisaną do parametru wyjściowego lub globalne lub jest przekazywana jako parametr.Dla wartości zwracanych _Must_inspect_result_ oznacza _Check_return_.

_Use_decl_annotations_

Mogą być używane w definicji funkcji (znany również jako treści funkcji), zamiast listę adnotacji w nagłówku. Gdy _Use_decl_annotations_ jest używany, adnotacje, które pojawiają się w nagłówku w zakres tych samych funkcji są używane tak, jakby są one również definicję, która ma _Use_decl_annotations_ adnotacji.

Adnotacje Sukces/Awaria

Funkcja może się nie powieść, a jeśli tak, jego wyniki mogą być niekompletne lub różnią się od wyników, gdy funkcja się powiedzie.Adnotacje na poniższej liście zawierają możliwości wyrażania zachowanie awarii.Aby użyć tych adnotacji, należy włączyć powinny pozwalać na ustalenie sukcesu; w związku z tym _Success_ adnotacji jest wymagany.Należy zauważyć, że NTSTATUS i HRESULT już _Success_ adnotacji wbudowane w nich; Jednakże jeśli określisz swoje własne _Success_ adnotacji na NTSTATUS lub HRESULT, ustawienie to zastępuje wbudowane adnotacji.

Adnotacja

Opis

_Always_(anno_list)

Równoważne z anno_list _On_failure_(anno_list); oznacza to, adnotacje w anno_list mieć, czy funkcja się powiedzie.

_On_failure_(anno_list)

Ma być używana tylko wtedy, gdy _Success_ jest także używany do opisywania funkcji — jawnie lub niejawnie przez _Return_type_success_ na jest elementem typedef.Gdy _On_failure_ adnotacji jest obecny przy użyciu funkcji parametru lub return wartości, każdej adnotacji w anno_list (rok) zachowuje się tak, jakby to były zakodowane jako _When_(!expr, anno), gdzie expr jest parametr w celu uzyskania wymaganego _Success_ adnotacji.Oznacza to, że domniemane stosowania _Success_ do wszystkich post-conditions nie ma zastosowania do _On_failure_.

_Return_type_success_(expr)

Można stosować jako element TypeDef.Wskazuje, że wszystkie funkcje tego zwrotu, że wpisz jawnie nie mają _Success_ adnotacje są tak, jakby _Success_(expr)._Return_type_success_Nie można użyć w funkcji lub typedef wskaźnika funkcji.

_Success_(expr)

exprto wyrażenie, której wynikiem jest wartość r-wartości.Gdy _Success_ adnotacji znajduje się na deklarację funkcji lub definicji, każdej adnotacji (anno) na funkcję i w post-condition zachowuje się tak, jakby to były zakodowane jako _When_(expr, anno)._Success_ Adnotacji może być używany tylko dla funkcji, nie na jego parametry lub typ zwrotny.Może być co najwyżej jeden _Success_ adnotacji na funkcję, a nie może być w dowolnym _When_, _At_, lub _Group_.Aby uzyskać więcej informacji, zobacz Określanie warunków pojawiania się adnotacji.

Zobacz też

Informacje

Dodawanie adnotacji do parametrów funkcji i zwracanych wartości

Dodawanie adnotacji struktur i klas

Dodawanie adnotacji do zachowania blokującego

Określanie warunków pojawiania się adnotacji

Funkcje wewnętrzne

Najlepsze praktyki i przykłady (SAL)

Koncepcje

Zrozumienie SAL

Inne zasoby

Za pomocą adnotacji SAL do zmniejszenia wady kod C/C++