跳轉到內容

Ada 程式設計/屬性/'描述符大小

來自華夏公益教科書,開放的書籍,開放的世界

非靜態屬性 Descriptor_Size 返回為型別分配的描述符的大小(以位計)。只有對於無約束陣列型別,結果才非零,返回的值為通用整數型別。在 GNAT 中,陣列描述符包含邊界資訊,並且位於陣列第一個元素之前。

type Unconstr_Array is array (Short_Short_Integer range <>) of Positive;
Put_Line ("Descriptor size = " & Unconstr_Array'Descriptor_Size'Img);

該屬性考慮了由於元件型別對齊而產生的任何填充。在上面的示例中,描述符包含兩個型別為 Short_Short_Integer 的值,表示下界和上界。但是,由於 Positive 的對齊方式為 4,因此描述符的大小為 2 * Short_Short_Integer'Size,向上取整到 32 的下一個倍數,這將產生 32 位的大小,即包括 16 位填充。

華夏公益教科書