Getting constants from #defines
Hi all, I was expecting something like foreign import ccall unsafe "static ncurses.h ERR" cERR :: CInt to allow me to access the value of ERR (a #define) as cERR. However, as far as I can tell GHC is trying to compile this as if ERR was a function. This seems silly to me as a function can always be defined with a type "a -> b" where "a", "b" or both can be "()" so this should be unambiguous. Am I misunderstanding what is going on here? Thanks Ian
I was expecting something like
foreign import ccall unsafe "static ncurses.h ERR" cERR :: CInt
to allow me to access the value of ERR (a #define) as cERR.
In case you're wondering _why_ this doesn't work, it's because we'd like to be able to implement the ffi by dlopening a bunch of .o, .a and .so files and looking up symbols in them - with no C compiler anywhere in the picture. IIRC, this is how ghci worked at one stage - not sure if it still does. -- Alastair Reid alastair@reid-consulting-uk.ltd.uk http://www.reid-consulting-uk.ltd.uk/alastair/
participants (2)
-
Alastair Reid -
Ian Lynagh