home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.c      Meh, in C you gotta define EVERYTHING      243,242 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 242,862 of 243,242   
   Tim Rentsch to Keith Thompson   
   Re: _BitInt(N)   
   06 Jan 26 21:57:01   
   
   From: tr.17687@z991.linuxsc.com   
      
   Keith Thompson  writes:   
      
   > Tim Rentsch  writes:   
   >   
   >> James Kuyper  writes:   
   >   
   > [...]   
   >   
   >>> Note: in C2023, the [predefined macro names] section says:  "Any other   
   >>> predefined macro names:  shall begin with a leading underscore   
   >>> followed by an uppercase letter;  or, a second underscore...".  For   
   >>> earlier versions of the standard, user code should avoid using such   
   >>> identifiers because they were reserved for all purposes, but that's no   
   >>> longer the case.  Now, they should be avoided because they may be   
   >>> pre-defined by the implementation, which means that any attempt to use   
   >>> them might have unpredictable results.   
   >>   
   >> That's right in the sense that if the implementation is unknown then   
   >> unexpected results may occur.  However, if the implementation is   
   >> known, then we can find out what results are expected by consulting   
   >> the implementation's documentation for extensions, since any such   
   >> macro name must qualify as an extension, and so much be documented.   
   >>   
   >> Note by the way that the description in N3220 section 6.10.10.1   
   >> paragraph 2 makes using #define or #undef be undefined behavior only   
   >> for macro names in the subclause (and also a short list of other   
   >> identifiers).  Hence any other predefined macro name may be used,   
   >> definedly, simply by using #undef and then #define for the macro   
   >> name in question (in particular, under C23 rules, but not earlier   
   >> versions of the C standard).   
   >   
   > I don't *think* that all implementation-specific predefined macros have   
   > to be documented -- at least, I'd be surprised if that were the intent.   
   >   
   > For example, I don't think an implementation is required to document its   
   > use of _STDIO_H (the include guard header in the glibc implementation of   
   > ).   
   >   
   > Though it's not normative, N3220 J.5.1 (Common extensions) says:   
   >   
   >     Examples of such extensions are new keywords, extra library   
   >     functions declared in standard headers, or predefined macros with   
   >     names that do not begin with an underscore.   
      
   I gave a clarifying response to this question in my recent   
   followup to the post from James Kuyper.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca