[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [sr #110399] turning off preference for newest supported C?
From: |
Nick Bowler |
Subject: |
Re: [sr #110399] turning off preference for newest supported C? |
Date: |
Thu, 10 Dec 2020 18:58:43 -0500 |
On 2020-12-10, Karl Berry <INVALID.NOREPLY@gnu.org> wrote:
> When a longstanding core existing feature (AC_PROG_CC) is changed in a
> backward-incompatible way, a way to get the heretofore standard behavior
> feels more like a bug fix than a feature request to me. For that matter, it
> feels
> like a new macro or option would have been more desirable than incompatibly
> changing existing behavior.
I will note that -std=gnu11 (or, more recently, the substantially
equivalent -std=gnu17) mode has been the default mode of GCC for the
better part of a decade now.
So with modern compilers I would not expect there to be much
difference between old and new behaviour of AC_PROG_CC (you'll get a
modern C flavour
in either case).
> Anyway. Semantics aside, I had the same reaction to the weird error about
> "long int". I haven't had a chance to look into it yet, but my expectation
> is that it is something specific to the TL autoconfigury. (I mean, presumably
> int64_t should not be getting #define-d in the first place.)
My guess would be that something is including either <stdint.h> or
<inttypes.h> with these macros defined. Per the C spec, int64_t is a
reserved identifier if either header is included so defining a macro
with this name and including one of these headers gives undefined
behaviour.
It is really odd that such a problem would occur simply by changing
the C standard version. Perhaps there is code conditional code on
__STDC_VERSION__? For example, it could be that <stdint.h> is
included only if __STDC_VERSION >= 199901, and because of the macro
definition you get undefined results (translation failure in this
case).
Cheers,
Nick