Do you think that the alternate spellings in<iso646.h> are
puerile compared compared to trigraphs? According to the
Rationale, that is the reason that<iso646.h> exists:
It [AMD1] also adds a library header,<iso646.h>, that
defines a number of macros that expand to still other
tokens which are less readable when spelled with trigraphs.
It does not feel right to me -- it has never felt right to me --
that a language Standard should fret so mightily over the way the
source is encoded. This is a Standard, after all, that carefully
says as little as possible about the external form of the source
code: All we know is that it can be divided into "lines" (by some
unspecified means) and that there are ways to represent a certain
set of required characters (again, by unspecified means). And then
this same laissez-faire Standard turns around and niggles over ways
to re-encode characters and character combinations, on the grounds
that some I/O devices may have difficulty with them ... The caption
should be "What's wrong with this picture?"
Trigraphs, <iso646.h>, and digraphs all have the appearance of
barnacles whose only function is to weigh down the language and make
it lumpier. IMHO, C would be better off if all three had never been
invented -- but that's jut MHO.