ffi\_prep\_cif(3) Library Functions Manual ffi\_prep\_cif(3)

# [NAME](#NAME)

`ffi_prep_cif` — Prepare a `ffi_cif` structure for use with `ffi_call`

# [SYNOPSIS](#SYNOPSIS)

`#include <ffi.h>`

`ffi_status`  
`ffi_prep_cif`(`ffi_cif *cif`, `ffi_abi abi`, `unsigned int nargs`, `ffi_type *rtype`, `ffi_type **atypes`);

# [DESCRIPTION](#DESCRIPTION)

The `ffi_prep_cif` function prepares a `ffi_cif` structure for use with `ffi_call` `abi` specifies a set of calling conventions to use. `atypes` is an array of `nargs` pointers to `ffi_type` structs that describe the data type, size and alignment of each argument. `rtype` points to an `ffi_type` that describes the data type, size and alignment of the return value. Note that to call a variadic function `ffi_prep_cif_var` must be used instead.

# [RETURN VALUES](#RETURN_VALUES)

Upon successful completion, `ffi_prep_cif` returns `FFI_OK`. It will return `FFI_BAD_TYPEDEF` if `cif` is `NULL` or `atypes` or `rtype` is malformed. If `abi` does not refer to a valid ABI, `FFI_BAD_ABI` will be returned. Available ABIs are defined in `<ffitarget.h>`.

# [SEE ALSO](#SEE_ALSO)

[ffi(3)](/man/os/libffi/ffi.3), [ffi\_call(3)](/man/os/libffi/ffi_call.3), [ffi\_prep\_cif\_var(3)](/man/os/libffi/ffi_prep_cif_var.3)

February 15, 2008

---

Document: ffi_prep_cif(3) from libffi 3.8.0-r1 (Chainguard OS)
Source: https://github.com/libffi/libffi.git
