Am 13.12.23 um 09:01 schrieb Jeff King: > On Tue, Dec 12, 2023 at 11:30:03PM +0100, René Scharfe wrote: > >> I wonder if >> it's time to use the C99 type _Bool in our code. It would allow >> documenting that only two possible values exist in cases like the one >> above. That would be even more useful for function returns, I assume. > I don't even know that we'd need much of a weather-balloon patch. I > think it would be valid to do: > > #ifndef bool > #define bool int > > to handle pre-C99 compilers (if there even are any these days). Of > course we probably need some conditional magic to try to "#include > <stdbool.h>" for the actual C99. I guess we could assume C99 by default > and then add NO_STDBOOL as an escape hatch if anybody complains. The semantics are slightly different in edge cases, so that fallback would not be fully watertight. E.g. consider: bool b(bool cond) {return cond == true;} bool b2(void) {return b(2);} b() returns false if you give it false and true for anything else. b2() returns true. With int as the fallback this becomes: int b(int cond) {return cond == 1;} int b2(void) {return b(2);} Now only 1 is recognized as true, b2() returns 0 (false). A coding rule to not compare bools could mitigate that. Or a rule to only use the values true and false in bool context and to only use logical operators on them. René