(require '#:asdf) (asdf:oos 'asdf:load-op '#:cffi) (defpackage #:foo (:use #:cffi #:cl) (:shadow float) (:export float)) (in-package #:foo) (defctype foo:float :float) (eval-when (:compile-toplevel :load-toplevel :execute) (defmethod cffi:expand-to-foreign (value (type (eql 'foo:float))) `(coerce ,value 'single-float))) (eval-when (:compile-toplevel :load-toplevel :execute) (format t "~s~%" (macroexpand-1 '(cffi:defcfun foreign-foo :void (in foo:float)))))