Guía de seguimiento dinámico de Solaris

Tamaños de miembros y desplazamientos

Puede determinar el tamaño en bytes de cualquier tipo o expresión de D, incluida una estructura o unión, utilizando el operador sizeof. El operador sizeof se puede aplicar a una expresión o a un nombre de un tipo entre paréntesis, como lo muestran los dos ejemplos siguientes:

sizeof expression				sizeof (type-name)

Por ejemplo, la expresión sizeof (uint64_t) devolverá el valor 8, y la expresión sizeof (callinfo.ts) también devolverá 8 si se inserta en un código fuente de nuestro programa de ejemplo descrito anteriormente. El tipo de devolución formal del operador sizeof es el alias de tipo size_t, que se define como un entero sin signo del mismo tamaño que el puntero en el modelo de datos actual, y se utiliza para representar los recuentos de bytes. Cuando se aplica el operador sizeof a una expresión, el compilador de D la valida pero el tamaño del objeto resultante se calcula en el momento de la compilación y no se genera ningún código para la expresión. Puede utilizar sizeof en cualquier lugar que se requiera una constante de número entero.

Puede utilizar el operador acompañante offsetof para determinar el desplazamiento en bytes de un miembro de una estructura o unión desde el inicio del almacenamiento asociado con cualquier objeto del tipo de estructura o unión. El operador offsetof se utiliza en una expresión con el siguiente formato:

offsetof (type-name, member-name)

Aquí, type-name es el nombre de cualquier tipo de estructura o unión o alias de tipo, y member-name es el identificador que nombra a un miembro de dicha estructura o unión. De forma parecida a sizeof, offsetof devuelve un size_t y se puede utilizar en cualquier lugar de un programa en D en el que se pueda utilizar una constante de enteros.