On Fri, 10 Dec 2021 at 15:16, Rasmus Villemoes via Libstdc++
<libstd...@gcc.gnu.org> wrote:
>
> On 10/12/2021 16.06, Olivier Hainque wrote:
> > Hello,
> >
> > The attached patch for libstdc++ / VxWorks helps building
> > the library for old versions of the OS, as witnessed with
> > VxWorks 6.9 in particular.
> >
> > It explicitly requests C99 features from old system headers,
> > on which libstc++ relies since at least c++98. The specific
> > issue that exposed this was a failure to compile
> >
> >   libstdc++-v3/src/c++17/floating_to_chars.cc
> >
> > for VxWorks 6.9 with a batch of errors such as:
> >
> >   error: 'FP_NAN' was not declared in this scope
> >
> > The missing definitions are provided by the
> > system headers with guards on _HAS_C9X, which gets
> > internally defined when _C99 is.
> >
> > Ok to commit?
>
> Yes, we've observed that error as well. We have just patched our vxworks
> 5.5 headers to provide FP_NAN et al. There's no test of definedness or
> other uses of a _C99 macro anywhere, so ok by me, as it shouldn't change
> anything on our end.
>
> Rasmus

OK to commit then, thanks.

The comment is a bit misleading though:

+// libstdc++ relies on C99 features for virtually all versions of C++,
+// up to at least C++98.
+#undef _C99
+#define _C99 1

The "up to" seems backwards, I'd expect it to say "down to" or "as far
back as at least C++98".

But there's nothing older than C++98 anyway, so this just means "all
versions", there's no "virtually" about it.

Please just say "libstdc++ relies on C99 features for all versions of C++".

Reply via email to