Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sabit değerler gibi davranan ek açıklamalar kullanarak yapı ve sınıf üyelerine açıklama ekleyebilirsiniz; bunlar, kapsayan yapıyı parametre veya sonuç değeri olarak içeren herhangi bir işlev çağrısında veya işlev girişinde/çıkışında doğru kabul edilir.
Yapı ve Sınıf Ek Açıklamaları
_Field_range_(low, high)Alan, ile arasında (dahil)
lowhighbulunur._Satisfies_(_Curr_ >= low && _Curr_ <= high)Uygun ön koşullar veya gönderi koşulları kullanılarak açıklama eklenen nesneye uygulanana eşdeğerdir._Field_size_(size),_Field_size_opt_(size),_Field_size_bytes_(size),_Field_size_bytes_opt_(size)tarafından
sizebelirtilen öğelerde (veya baytlarda) yazılabilir boyuta sahip bir alan._Field_size_part_(size, count),_Field_size_part_opt_(size, count),_Field_size_bytes_part_(size, count),_Field_size_bytes_part_opt_(size, count)tarafından
sizebelirtilen öğelerde (veya baytlarda) yazılabilir boyuta vecountokunabilir olan bu öğelerin (bayt) değerine sahip bir alan._Field_size_full_(size),_Field_size_full_opt_(size),_Field_size_bytes_full_(size),_Field_size_bytes_full_opt_(size)tarafından
sizebelirtilen öğelerde (veya baytlarda) hem okunabilir hem de yazılabilir boyuta sahip bir alan._Field_z_Null olarak sonlandırılan dizeye sahip bir alan.
_Struct_size_bytes_(size)Yapı veya sınıf bildirimi için geçerlidir. Bu türdeki geçerli bir nesnenin, tarafından
sizebelirtilen bayt sayısıyla bildirilen türden büyük olabileceğini gösterir. Örneğin:typedef _Struct_size_bytes_(nSize) struct MyStruct { size_t nSize; ... };Daha sonra türdeki
pMbir parametreninMyStruct *bayt cinsinden arabellek boyutu şu şekilde alınır:min(pM->nSize, sizeof(MyStruct))
Örnek
#include <sal.h>
// This _Struct_size_bytes_ is equivalent to what below _Field_size_ means.
_Struct_size_bytes_(__builtin_offsetof(MyBuffer, buffer) + bufferSize * sizeof(int))
struct MyBuffer
{
static int MaxBufferSize;
_Field_z_
const char* name;
int firstField;
// ... other fields
_Field_range_(1, MaxBufferSize)
int bufferSize;
_Field_size_(bufferSize) // Preferred way - easier to read and maintain.
int buffer[]; // Using C99 Flexible array member
};
Bu örnek için notlar:
-
_Field_z_eşdeğeri,_Null_terminated_olur._Field_z_ad alanı için ad alanının null olarak sonlandırılan bir dize olduğunu belirtir. -
_Field_range_içinbufferSizedeğerininbufferSize1 veMaxBufferSize(ikisi de dahil) içinde olması gerektiğini belirtir. - ve
_Struct_size_bytes_ek açıklamalarının_Field_size_bitiş sonuçları eşdeğerdir. Benzer bir düzene sahip yapılar veya sınıflar için,_Field_size_eşdeğer_Struct_size_bytes_ek açıklamaya göre daha az başvuru ve hesaplamaya sahip olduğundan okuması ve bakımı daha kolaydır._Field_size_bayt boyutuna dönüştürme gerektirmez. Bayt boyutu tek seçenekse, örneğin geçersiz işaretçi alanı_Field_size_bytes_için kullanılabilir. Hem hem de_Struct_size_bytes__Field_size_varsa, her ikisi de araçlar tarafından kullanılabilir. İki ek açıklamanın aynı fikirde olmadığı durumda yapılması gerekenler aralığa bağlı.