Bagikan melalui


Fungsi Intrinsik

Ekspresi dalam SAL bisa menjadi ekspresi C/C++ asalkan ekspresinya tidak memiliki efek samping—misalnya, ++, --, dan panggilan fungsi semuanya memiliki efek samping dalam konteks ini. Namun, SAL memang menyediakan beberapa objek seperti fungsi dan beberapa simbol cadangan yang dapat digunakan dalam ekspresi SAL. Ini disebut sebagai fungsi intrinsik.

Tujuan Umum

Anotasi fungsi instrinsik berikut menyediakan utilitas umum untuk SAL.

Anotasi Deskripsi
_Curr_ Sinonim untuk objek yang saat ini sedang diannotasi. _At_ Ketika anotasi sedang digunakan, _Curr_ sama dengan parameter pertama ke _At_. Jika tidak, itu adalah parameter atau seluruh nilai fungsi/pengembalian yang anotasinya terkait secara leksikal.
_Inexpressible_(expr) Mengekspresikan situasi di mana ukuran buffer terlalu kompleks untuk diwakili dengan menggunakan ekspresi anotasi—misalnya, ketika dihitung dengan memindai himpunan data input lalu menghitung anggota yang dipilih.
_Nullterm_length_(param) param adalah jumlah elemen dalam buffer hingga tetapi tidak termasuk terminator null. Ini dapat diterapkan ke buffer apa pun dari jenis non-agregat dan tidak batal.
_Old_(expr) Ketika dievaluasi dalam prasyarat, _Old_ mengembalikan nilai exprinput . Ketika dievaluasi dalam kondisi pasca-kondisi, nilai tersebut akan mengembalikan nilai expr seperti yang akan dievaluasi dalam prasyarat.
_Param_(n) Parameter nke fungsi, dihitung dari 1 hingga n, dan n merupakan konstanta integral harfiah. Jika parameter diberi nama, anotasi ini identik dengan mengakses parameter berdasarkan nama. Catatan: n dapat merujuk ke parameter posisi yang ditentukan oleh elipsis, atau dapat digunakan dalam prototipe fungsi di mana nama tidak digunakan.
return Kata kunci return cadangan C/C++ dapat digunakan dalam ekspresi SAL untuk menunjukkan nilai pengembalian fungsi. Nilai hanya tersedia dalam status pos; ini adalah kesalahan sintaks untuk menggunakannya dalam keadaan sebelumnya.

String Spesifik

Anotasi fungsi intrinsik berikut memungkinkan manipulasi string. Keempat fungsi ini melayani tujuan yang sama: untuk mengembalikan jumlah elemen jenis yang ditemukan sebelum terminator null. Perbedaannya adalah jenis data dalam elemen yang dimaksud. Perhatikan bahwa jika Anda ingin menentukan panjang buffer null-terminated yang tidak terdiri dari karakter, gunakan _Nullterm_length_(param) anotasi dari bagian sebelumnya.

Anotasi Deskripsi
_String_length_(param) param adalah jumlah elemen dalam string hingga tetapi tidak termasuk terminator null. Anotasi ini dicadangkan untuk jenis string karakter.
strlen(param) param adalah jumlah elemen dalam string hingga tetapi tidak termasuk terminator null. Anotasi ini dicadangkan untuk digunakan pada array karakter dan menyerupan fungsi C Runtime strlen().
wcslen(param) param adalah jumlah elemen dalam string hingga (tetapi tidak termasuk) terminator null. Anotasi ini dicadangkan untuk digunakan pada array karakter lebar dan menyerupan fungsi Runtime C wcslen().

Lihat juga