Autoconf 2.73's preference for C23 apparently includes gcc-14,
I presume because it provides options -stdc=gnu23 and =c23.

The problem is that the C23 support in that version of gcc is
"experimental" (I think it predates the final release of C23), and hence
__STDC_VERSION__ is not defined to be the usual 202311L, but
"an unspecified value greater than 201710L".
In gcc 14.2, it is 202000L. (This is the default compiler for
FreeBSD 13.x, at least. Which particular OS version is soon to be
end-of-life, granted, but that's beside the point I'm trying to make.)

I think it would be better if autoconf did not switch to such partial
implementations of standards, and only switched if the compiler supports
the full, final, real standard.

Otherwise, every application has to start messing around with precisely
which __STDC_VERSION__ values are used in what circumstances (not
desirable, seems to defeat the purpose of having well-defined
__STDC__VERSION__ values), and/or somehow forcing different versions of
compilers in such in-between cases (also not desirable, not at all
simple to figure out what to do and when and how).

Such partial implementations while a new version of a standard is being
developed will surely come up again in the future.

MHO, FWIW. --thanks, karl.

P.S. Also, not a bug, but I admit I don't understand the logic of
preferring C23 for C compilers by default (when available), but leaving
C++ as the compiler default. It would seem better and clearer to me for
Autoconf to use the compiler default in all cases, and leave it to the
application to decide on the standard to aim for. After all, forcing C23
will soon (within a few years) not be the right thing for people who
want to live on the bleeding edge. Nor is it the right thing now for
people who don't. Standards are always changing, and different standards
are better for different people; please consider having Autoconf be
agnostic about what standard to use.


Reply via email to