XPost: comp.lang.c   
   From: Keith.S.Thompson+u@gmail.com   
      
   James Kuyper writes:   
   > On 2025-08-05 17:13, Kaz Kylheku wrote:   
   >> On 2025-08-04, Michael S wrote:   
   >>> On Mon, 4 Aug 2025 15:25:54 -0400   
   >>> James Kuyper wrote:   
   >>>   
   > ...   
   >>>> If _BitInt is accepted by older versions of gcc, that means it was   
   >>>> supported as a fully-conforming extension to C. Allowing   
   >>>> implementations to support extensions in a fully-conforming manner is   
   >>>> one of the main purposes for which the standard reserves identifiers.   
   >>>> If you thought that gcc was too conservative to support extensions,   
   >>>> you must be thinking of the wrong organization.   
   >>>>   
   >>>   
   >>> I know that gcc supports extensions.   
   >>> I also know that gcc didn't support *this particular extension* up   
   >>> until quite recently.   
   >>   
   >> I think what James means is that GCC supports, as an extension,   
   >> the use of any _[A-Z].* identifier whatsoever that it has not claimed   
   >> for its purposes.   
   >   
   > No, I meant very specifically that if, as reported, _BitInt was   
   > supported even in earlier versions, then it was supported as an extension.   
      
   gcc 13.4.0 does not recognize _BitInt at all.   
      
   gcc 14.2.0 handles _BitInt as a language feature in C23 mode,   
   and as an "extension" in pre-C23 modes.   
      
   It warns about _BitInt with "-std=c17 -pedantic", but not with   
   just "-std=c17". I think I would have preferred a warning with   
   "-std=c17", but it doesn't bother me. There's no mention of _BitInt   
   as an extension or feature in the documentation. An implementation   
   is required to document the implementation-defined value of   
   BITINT_MAXWIDTH, so that's a conformance issue. In pre-C23 mode,   
   since it's not documented, support for _BitInt is not formally an   
   "extension"; it's an allowed behavior in the presence of code that   
   has undefined behavior due to its use of a reserved identifier.   
   (This is a picky language-lawyerly interpretation.)   
      
   --   
   Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com   
   void Void(void) { Void(); } /* The recursive call of the void */   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|