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,510 of 243,242   
   Tim Rentsch to Waldek Hebisch   
   Re: _BitInt(N)   
   21 Dec 25 23:07:55   
   
   From: tr.17687@z991.linuxsc.com   
      
   antispam@fricas.org (Waldek Hebisch) writes:   
      
   > Tim Rentsch  wrote:   
   >   
   >> James Kuyper  writes:   
   >>   
   >>> bart  wrote:   
   >>>   
   >>>> On 28/11/2025 23:23, Keith Thompson wrote:   
   >>>>   
   >>>>> bart  writes:   
   >>>>>   
   >>>>>> On 28/11/2025 02:33, Janis Papanagnou wrote:   
   >>>>>   
   >>>>> [...]   
   >>>>>   
   >>>>>>>>>> You can of course add as many commodity features to "your   
   >>>>>>>   
   >>>>>>> language" as you like.  I seem to recall that one of the design   
   >>>>>>> principles of "C" was to not add too many keywords.  (Not sure   
   >>>>>>> whether 'A.odd' is a function or keyword above [in "your   
   >>>>>>> language"].)   
   >>>>>>   
   >>>>>> It is a reserved word, which means it can't be used as either a   
   >>>>>> top-level user identifier, or a member name.  With extra effort,   
   >>>>>> it could be used for both, but that needs some special syntax,   
   >>>>>> such as Ada-style "A'odd";  I've never got around to it.   
   >>>>>>   
   >>>>>> In Pascal (where I copied it from) it is a reserved word.   
   >>>>>   
   >>>>> In Pascal, "odd" is not a reserved word.  It's the name of a   
   >>>>> predefined function.   
   >>>>   
   >>>> So what's a 'reserved word' then?  To me it is something not   
   >>>> available as a user-identifier because it has a special meaning in   
   >>>> the language,   
   >>>   
   >>> That's a general description, but at least in C, there's several   
   >>> different kinds of reserved identifiers, each kind specifies   
   >>> different restrictions on user code use of that identifier.   
   >>>   
   >>> 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.   
   >   
   > Hmm, looking at '/usr/include/string.h' on my machine I see definitions   
   > of things like   
   >   
   > __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION   
   > __need_size_t   
   >   
   > and lot of similar things.  I do not recall seeing any user   
   > documentation listing them.  Does this mean that gcc+glibc   
   > is noncompilant in this aspect?   
      
   I think it's reasonable to say that the appearance of a macro   
   name being #define'd in a standard header qualifies as   
   documenting the name being #define'd.  As long as the #define is   
   readable in an ordinary source file, there isn't any mystery   
   about the name being used or what its definition is.  I suppose   
   that to satisfy the letter of the C standard, the accompanying   
   document would need to incorporate the system header files by   
   reference, but surely the header files satisfy the spirit of   
   providing the required documentation.  Implementation-defined   
   values for things like CHAR_BIT and INT_MAX fall under the same   
   rule for documentation as do extensions, yet as far as I know   
   these values are defined only in system header files, and not in   
   any separate document.   
      
   --- 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