Is there any downside to using
typedef char bool; enum boolean { false, true };
in C to provide a semantic boolean type?
In C99, you should be using stdbool.h, which defines bool, true, and false.
stdbool.h
bool
true
false
Otherwise what you have is fine. Using just the enum may be a bit simpler, but if you really want to save space what you have works.