Using _Bool
in a C89 compiler invokes undefined behavior because you use an identifier starting with an underscore and upper case letter. I don't have the paper copy of C89 handy, but expect it to be the same as C99 7.1.3:
— All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.
One permissible undefined behavior is accepting _Bool
without a diagnostic. This is a GNU extension.
Of course, bool
doesn't fall into the implementation namespace, so must be diagnosed unless declared.