When translating anonymous enums to Lisp, it might be easier to use something like the defcenum:
(defmacro defenum (&body enums) `(progn ,@(loop for value in enums for index = 0 then (1+ index) when (listp value) do (setf index (second value) value (first value)) collect `(defconstant ,value ,index))))
This will be expanded to a block of defconstants:
(defenum a (b 10) c)
->
(PROGN (DEFCONSTANT A 0) (DEFCONSTANT B 10) (DEFCONSTANT C 11))
It is not necessary to use keywords like for the named enums, because unnamed enums in C are just syntatic sugar for a list of "#define"s, which is mapped to a list of defconstants. I don't know, if this macro fits in the philosophy of CFFI, perhaps in some utility class, and maybe with another name "defanonenum".