Funkcje wewnętrzne
Wyrażenie w sal może być wyrażeniem C/C++, pod warunkiem, że jest to wyrażenie, które nie ma efektów ubocznych — na przykład ++, --, i wywołania funkcji mają skutki uboczne w tym kontekście. Jednak sal zapewnia niektóre obiekty podobne do funkcji i niektóre zastrzeżone symbole, które mogą być używane w wyrażeniach SAL. Są one określane jako funkcje wewnętrzne.
Ogólnego przeznaczenia
Następujące adnotacje funkcji instrynacji zapewniają ogólne narzędzie dla SAL.
Adnotacja | opis |
---|---|
_Curr_ |
Synonim obiektu, który jest obecnie adnotacją. Gdy adnotacja _At_ jest używana, _Curr_ jest taka sama jak pierwszy parametr do _At_ . W przeciwnym razie jest to parametr lub cała funkcja/wartość zwracana, z którą adnotacja jest skojarzona leksykalnie. |
_Inexpressible_(expr) |
Wyraża sytuację, w której rozmiar buforu jest zbyt złożony do reprezentowania przy użyciu wyrażenia adnotacji — na przykład w przypadku obliczenia przez skanowanie wejściowego zestawu danych, a następnie zliczanie wybranych elementów członkowskich. |
_Nullterm_length_(param) |
param jest liczbą elementów w buforze do, ale nie zawiera separatora wartości null. Można go zastosować do dowolnego buforu typu niegregowanego, niepustego. |
_Old_(expr) |
Gdy jest obliczana w warunku wstępnym, _Old_ zwraca wartość expr wejściową . Gdy jest obliczana w warunku po, zwraca wartość expr , tak jak zostałaby obliczona w warunku wstępnym. |
_Param_(n) |
Ten n parametr do funkcji, licząc od 1 do n , i n jest literału stałą całkowitą. Jeśli parametr ma nazwę, ta adnotacja jest identyczna z dostępem do parametru według nazwy. Uwaga: n może odwoływać się do parametrów pozycyjnych zdefiniowanych przez wielokropek lub mogą być używane w prototypach funkcji, w których nazwy nie są używane. |
return |
Zastrzeżone słowo kluczowe return C/C++ można użyć w wyrażeniu SAL, aby wskazać wartość zwracaną funkcji. Wartość jest dostępna tylko w stanie post; jest to błąd składniowy, który ma być używany w stanie wstępnym. |
Specyficzne dla ciągu
Następujące adnotacje funkcji wewnętrznej umożliwiają manipulowanie ciągami. Wszystkie cztery z tych funkcji mają ten sam cel: aby zwrócić liczbę elementów typu znalezionych przed terminatorem o wartości null. Różnice są rodzajami danych w elementach, do których się odwołujesz. Należy pamiętać, że jeśli chcesz określić długość buforu zakończonego wartością null, który nie składa się z znaków, użyj _Nullterm_length_(param)
adnotacji z poprzedniej sekcji.
Adnotacja | opis |
---|---|
_String_length_(param) |
param jest liczbą elementów w ciągu do, ale nie zawiera separatora wartości null. Ta adnotacja jest zarezerwowana dla typów ciągów znaków. |
strlen(param) |
param jest liczbą elementów w ciągu do, ale nie zawiera separatora wartości null. Ta adnotacja jest zarezerwowana do użycia w tablicach znaków i przypomina funkcję środowiska uruchomieniowego języka C strlen(). |
wcslen(param) |
param jest liczbą elementów w ciągu maksymalnie (ale nie w tym) terminatorem o wartości null. Ta adnotacja jest zarezerwowana do użycia w tablicach znaków szerokich i przypomina funkcję środowiska uruchomieniowego języka C wcslen(). |
Zobacz też
- Korzystanie z adnotacji SAL w celu zmniejszenia liczby defektów kodu C/C++
- Informacje o języku SAL
- Dodawanie adnotacji do parametrów funkcji i zwracanych wartości
- Zachowanie funkcji dodawania adnotacji
- Dodawanie adnotacji do struktur i klas
- Dodawanie adnotacji do zachowania blokującego
- Określanie miejsca i warunków stosowania adnotacji
- Najlepsze rozwiązania i przykłady