Andres Freund <andres@anarazel.de> writes:
> GCC generally doesn't warn about macro redefinitions, if both
> definitions are equivalent.
But they're *not* equivalent. c.h has
#define true ((bool) 1)
whereas so far as I can see the <stdbool.h> definition is just
#define true 1
And if you put those two definitions together you will get a warning.
The lack of one with c.h + <stdbool.h> means somebody is cheating.
regards, tom lane