The GET_VAL macro in src/builtin.cmod is invoked like this:
> GET_VAL (true)
> GET_VAL (false)
> GET_VAL (null)
If you happen to include <stdbool.h>, the macro expansion might result
in these functions:
get_val_1
get_val_0
get_val_null
This is because true is defined as 1 and false as 0.
This isn't a big issue for two reasons:
- src/builtin.cmod does not actually invoke <stdbool.h>
- as far as I can see, nothing actually uses get_val_true and
get_val_false (but I may be overlooking something)
This could be fixed by ## and # directly in the GET_VAL macro, instead
of going via PIKE_CONCAT and TOSTR. Of course, that breaks on older
compilers that don't support ## and #; I don't know if the Pike
community still cares about them.
One could also argue that "if it ain't broke, don't fix it". That is
a valid point of view. But the code is a bit fragile; sooner or later
somebody might add <stdbool.h> without that it affects the GET_VAL
expansion.