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

# [NAME](#NAME)

`ffi_prep_cif_var` — Prepare a `ffi_cif` structure for use with `ffi_call` for variadic functions.

# [SYNOPSIS](#SYNOPSIS)

`#include <ffi.h>`

`ffi_status`  
`ffi_prep_cif_var`(`ffi_cif *cif`, `ffi_abi abi`, `unsigned int nfixedargs`, `unsigned int ntotalargs`, `ffi_type *rtype`, `ffi_type **atypes`);

# [DESCRIPTION](#DESCRIPTION)

The `ffi_prep_cif_var` function prepares a `ffi_cif` structure for use with `ffi_call` for variadic functions. `abi` specifies a set of calling conventions to use. `atypes` is an array of `ntotalargs` 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. `nfixedargs` must contain the number of fixed (non-variadic) arguments. Note that to call a non-variadic function `ffi_prep_cif` must be used.

# [RETURN VALUES](#RETURN_VALUES)

Upon successful completion, `ffi_prep_cif_var` 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(3)](/man/os/libffi/ffi_prep_cif.3)

January 25, 2011

---

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