I've seen definitions in C
#define TRUE (1==1)
#define FALSE (!TRUE)
Is this necessary? What's the benefit over simply defining TRUE as 1, and FALSE as 0?
This approach will use the actual boolean
type (and resolve to true
and false
) if the compiler supports it. (specifically, C++)
However, it would be better to check whether C++ is in use (via the __cplusplus
macro) and actually use true
and false
.
In a C compiler, this is equivalent to 0
and 1
.
(note that removing the parentheses will break that due to order of operations)