Next: External Foreign Variables, Up: Foreign Variables

#### 8.4.1 Local Foreign Variables

— Macro: sb-alien:with-alien var-definitions &body body

> The `with-alien` macro establishes local foreign variables with the specified alien types and names. This form is analogous to defining a local variable in C: additional storage is allocated, and the initial value is copied. This form is less analogous to `LET`-allocated Lisp variables, since the variables can't be captured in closures: they live only for the dynamic extent of the body, and referring to them outside is a gruesome error.

> The var-definitions argument is a list of variable definitions, each of the form

>               (name type &optional initial-value)

> The names of the variables are established as symbol-macros; the bindings have lexical scope, and may be assigned with `setq` or `setf`.

> The `with-alien` macro also establishes a new scope for named structures and unions. Any type specified for a variable may contain named structure or union types with the slots specified. Within the lexical scope of the binding specifiers and body, a locally defined foreign structure type foo can be referenced by its name using `(struct` foo`)`.