Hello,

From the  CFFI manual, Section 4.9,  I understand that 

>> "Implementor’s note: size_t is almost always an unsigned int.”

However, this seems to fail on a 64 bit Linux computers, where the C ints are 
32 bit

I’ve had better success with 

(cffi:defctype size_t #.(cond ((= 4 (cffi:foreign-type-size :pointer))
                               :uint32)
                              ((= 8 (cffi:foreign-type-size :pointer))
                               :uint64)
                              (t (error "Failed type lisp-pointer-type"))))


Is this general enough to be trusted everywhere?  If so, should it be part of 
CFFI, or at least 
mentioned in the manual?  The current text in the manual doesn’t seem to be 
working for me, and this
is a frequent issue when I port a new foreign library and forget what I did in 
the past … first thing I do 
is (apropos “size-t” :cffi) and (apropos “size_t” :cffi) and nothing shows up.

Best regards,
J.K.

Reply via email to