CFFI's documentation says that it supports the use of constants and macros (like #define
) in the cdef
"provided the macro is defined to be an integer value", but it doesn't explicitly say that floating point constants are not supported. I've tried using the #define FOO ...
syntax with floats and #define FOO 0.5
but both fail, and have not found any more information on how I can possibly use floating point values in this manner. I'm trying to call functions from my C libraries from Python.
Is there a way to work around this limitation (if indeed it's a limitation) without touching the C code?
Only integers are supported. For things like floats, there are two solutions:
You can of course write the constant as pure Python code, if it has a known value, and use that from the rest of your Python code. In other words, put it outside CFFI.
This works in API mode: static const float FOO;
declares FOO
as something that can be read from in C, but not written to.