chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] checking whether a C macro is defined


From: Antony Lee
Subject: Re: [Chicken-users] checking whether a C macro is defined
Date: Thu, 16 Aug 2012 19:29:29 -0700

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

2012/8/16 Jim Ursetto <address@hidden>
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
address@hidden
https://lists.nongnu.org/mailman/listinfo/chicken-users



reply via email to

[Prev in Thread] Current Thread [Next in Thread]