#### 2.3.2 Structures ¶

`libffi` is perfectly happy passing structures back and forth. You must first describe the structure to `libffi` by creating a new `ffi_type` object for it.

Data type: ffi_type ¶

  The `ffi_type` has the following members:

  `size_t size`

    This is set by `libffi`; you should initialize it to zero.

  `unsigned short alignment`

    This is set by `libffi`; you should initialize it to zero.

  `unsigned short type`

    For a structure, this should be set to `FFI_TYPE_STRUCT`.

  `ffi_type **elements`

    This is a ‘`NULL`’-terminated array of pointers to `ffi_type` objects. There is one element per field of the struct.

    Note that `libffi` has no special support for bit-fields. You must manage these manually.

The `size` and `alignment` fields will be filled in by `ffi_prep_cif` or `ffi_prep_cif_var`, as needed.