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.