Hi Werner,
> > It's IMO a Groff problem that is not specific to MinGW:
> > stringclass.h is not idempotent.
>
> Indeed, this is true for (almost) all groff header files. For some
> reason, Clark decided to code it that way, not providing guards
> against loading header files multiple times. I haven't changed that.
Gets my vote. :-) It's a Bell Labs style of programming seen widely in
Plan 9. Rob Pike has also written about it since the 1980s. Header
files should not be #include'd multiple times; nor should they #include
others. They should state their needs and be #include'd once in the
C(++) file, in an appropriate order. Guards are verboten.
One example:
The construction of a single C++ binary at Google can open and read
hundreds of individual header files tens of thousands of times. In 2007,
build engineers at Google instrumented the compilation of a major Google
binary. The file contained about two thousand files that, if simply
concatenated together, totaled 4.2 megabytes. By the time the #includes
had been expanded, over 8 gigabytes were being delivered to the input of
the compiler, a blow-up of 2000 bytes for every C++ source byte.
-- Rob Pike, https://talks.golang.org/2012/splash.article#TOC_5.
(That dot is part of the anchor.)
Cheers, Ralph.