I ran into these lines:
#define bool bool
#define false false
#define true true
I don't think I need to say more than "wtf?", but just to be clear: What is the point of defining something to itself?
The lines come from clang stdbool.h
The C and C++ standards explicitly allow that (and requires that there is no infinite expansion)
BTW, function-like recursive (or self-refential) macros are even more useful:
#define puts(X) (nblines++,puts(X))
(the inner puts
is a call to the standard puts
function; the macro "overloads" such further calls by counting nblines
)
Your define could be useful, e.g. with later constructs like #ifdef true
, and it can't be a simple because that would "erase" every further use of #define true
true
, so it has to be exactly#define true true
.