The feature-test egg looks nice, I'll give it a try.
Thanks,
Antony

2012/8/16 Jim Ursetto <[email protected]>

> Hi,
> That should be foreign-declare for the whole thing, not foreign-code.
> Or use #> ... <# which is shorthand for foreign-declare.
>
> #>
> #include <foo.h>
>
> #ifndef FOO
> #define FOO -1
> #endif
> <#
>
> Another option is the feature-test egg, which is useful for complex cases,
> and doesn't require that you redefine anything.
>
> But for cases where it is safe to #define an undefined macro (in other
> words,
> when you can guarantee there is an impossible, harmless or safe default
> value),
> the above is easier.
>
> On Aug 16, 2012, at 6:37 PM, Antony Lee wrote:
>
> Hi all,
> I am looking for a way to check if a symbol is #defined as a C macro or
> not... something like
>
> (declare (foreign-declare "#include <foo.h>"))
> (foreign-code #<<EOF
> #ifndef FOO
> #define FOO -1
> #endif
> EOF
> )
> (define-foreign-variable FOO int)
>
> which doesn't work (because I cannot put C macros in foreign-code?).
>
> My second try was to use the bind egg:
> (bind* #<<EOF
> #ifndef FOO
> #define FOO -1
> #endif
> EOF
> )
>
> but now FOO is always redefined (i.e. #ifndef FOO always evaluates to
> true).
>
> Any suggestions?  (I guess I could always put all that in an actual header
> file full of #ifndef's and #include *that* one but I am looking for
> something more... elegant if possible.)
> Thanks,
> Antony
> _______________________________________________
> Chicken-users mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/chicken-users
>
>
>
_______________________________________________
Chicken-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to