Package: cffi
Macro defcvar
Lambda Listdefcvar (name-and-options type &optional documentation) ArgumentsReturn ValueA symbol naming the Lisp function to be created. Details The defcvar macro defines a symbol macro lisp-name that looks up
foreign-name and dereferences it acording to type. It can also be setfed, unless read-only is true, in which case an error will be signaled. When one of lisp-name or foreign-name is omitted, the other is automatically derived using the following rules:
ExamplesCFFI> (defcvar "errno" :int) => *ERRNO* CFFI> (foreign-funcall "strerror" :int *errno* :string) => "Inappropriate ioctl for device" CFFI> (setf *errno* 1) => 1 CFFI> (foreign-funcall "strerror" :int *errno* :string) => "Operation not permitted"Trying to modify a read-only foreign variable: CFFI> (defcvar ("errno" +error-number+ :read-only t) :int) => +ERROR-NUMBER+ CFFI> (setf +error-number+ 12) ;; error--> Trying to modify read-only foreign var: +ERROR-NUMBER+.Note that accessing errno this way won't work with every implementation of the C standard library. | See also |