Ad-'at'和'range'是什么意思/做什么?

Nob*_*fer 2 record ada data-structures

我正在调试一些软件,这些软件分为两部分 - 一部分用C++编写,另一部分用于Ada,我以前从未使用过.

在阅读一些Ada代码并查找包含粒子数据的变量时,我发现这些变量recordfor循环中使用,例如:

for myRecord use
    record
        eta    at    8    range    0 .. 31;
        ttg    at    16   range    0 .. 63;
    end record;
Run Code Online (Sandbox Code Playgroud)

atrange是在IDE(GPS- GNAT编程工作室),我以为粗体意味着它们的关键字/在Ada的特定的含义......有人可以给我解释一下这个结构是什么/呢?这里的数字是否与分配给变量/内存位置的内存量有关?

Sim*_*ght 8

eta从记录开始的字节偏移8的第0位开始,并继续到第31位; 即它从字节8开始占用32位.

类似地,rng从字节16位0开始占用64位.

请参见ARM 13.5.1,记录表示子句.

  • 这些证明了Ada在低级编程方面比大多数其他语言更好,因为为Ada指定这样的位组织是微不足道的.要完成Simon的回答,您应该在同一个包中先前为myRecord单独声明. (2认同)