G. Branden Robinson wrote:
> groff's had an assert.h header
> since version 1.01 (1991), but I don't know why. In 2020 I expanded it
> to support C99-style assertions (i.e., assertions that communicate
> meaning instead of the nearly useless form from C89). I am trying to
> not require C99 features; we can do without variable-length arrays and
> complex numbers. But as a developer I insist on C99 assertions.
The Gnulib manual [1] explains that Gnulib essentially assumes C99
already. I still have access to a machine with a pre-C99 compiler,
but I don't use it for testing any more, since there's no point in
using a 20-years old compiler that would barf on 50% of the source
files.
We haven't tested the behaviour of <assert.h> in detail, but you're
*very* likely to get the C99 assertions that you want everywhere.
> might require #include_next
Note that #include_next requires GCC or clang. So it is much more
of a portability constraint than merely requiring C99 or newer.
Therefore:
- How about removing groff's src/include/assert.h and just rely
on the one from the system?
- If that does not work out, how about putting the src/include/assert.h
into a different directory and adjust the -I options, so that
the Gnulib compilation units will not see it? Only the groff C++ code
would see it.
Bruno
[1]
<https://www.gnu.org/software/gnulib/manual/html_node/Portability-guidelines.html>