My OpenAL code also uses stuff from alc.h, so I modified my binding def:
(defbinding "openal-library" (nicknames "al") (flags "") (include "AL/al.h" "AL/alc.h" "AL/alut.h") (export "alenable" "aldisable") (override ""))
This yielded amongst other good stuff:
(cffi:defcstruct alcdevice-struct)
...on which we get divide-by-zero in CFFI because notice-foreign-struct-definition initializes max-align to zero and that never gets bumped up (because there are no slots and that is when it gets adjusted) and then gets used in a rem to determine padding.
Checking alc.h and the rest of the al includes, I do not see any actual definition for alcdevice-struct. I guess the type is needed to define the functions which get passed a pointer to a device struct, but the actual make-up of the struct is pure internal.
I will let you all fight it out, but it looks as if CFFI needs to be more tolerant? I will try initializing the max-align to 2 and see how much further I get.