Guia de rastreamento dinâmico Solaris

Deslocamentos e tamanhos de membro

Você pode determinar o tamanho em bytes de qualquer tipo ou expressão de D, incluindo uma struct ou união, usando o operador sizeof. O operador sizeof pode ser aplicado a uma expressão ou ao nome de um tipo entre parênteses, como ilustrado pelos dois exemplos seguintes:

sizeof expression				sizeof (type-name)

Por exemplo, a expressão sizeof (uint64_t) retornaria o valor 8, e a expressão sizeof (callinfo.ts) retornaria 8, se inserida no código-fonte do nosso programa de exemplo acima. O tipo de retorno formal do operador sizeof é o alias de tipo size_t, que é definido como um inteiro não-assinado do mesmo tamanho que um ponteiro no modelo de dados atual, e é usado para representar as contagens de byte. Quando o operador sizeof é aplicado a uma expressão, a expressão é validada pelo compilador de D, mas o tamanho de objeto resultante é calculado no momento da compilação e nenhum código da expressão é gerado. Você pode usar sizeof em qualquer lugar que uma constante de inteiro é necessária.

Você pode usar o operador acompanhante offsetof para determinar o desvio em bytes de um membro de struct ou de união a partir do início do armazenamento associado a qualquer objeto do tipo de união ou de struct. O operador offsetof é usado em uma expressão do seguinte formato:

offsetof (type-name, member-name)

Aqui nome do tipo é o nome de qualquer tipo de struct ou de união ou alias de tipo, e nome do membro é o identificador que nomeia um membro dessa struct ou união. Semelhante a sizeof, offsetof retorna size_t e pode ser usado em qualquer lugar em um programa em D onde uma constante de inteiro possa ser usada.