Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #166940

Re: New features added into C23 standard

From Opus <ifonly@youknew.org>
Newsgroups comp.lang.c
Subject Re: New features added into C23 standard
Date 2022-07-26 05:13 +0200
Organization Aioe.org NNTP Server
Message-ID <tbnm50$1ait$1@gioia.aioe.org> (permalink)
References (2 earlier) <fb562391-0bbe-488d-a89f-edc676e703b7n@googlegroups.com> <87mtcwzwt9.fsf@nosuchdomain.example.com> <40f5c874-ba25-4020-98a0-b6ce01b38dban@googlegroups.com> <87ilnkznte.fsf@nosuchdomain.example.com> <ea47d9bc-4f43-4110-a3f5-8b0aa0756db6n@googlegroups.com>

Show all headers | View raw


Le 26/07/2022 à 04:23, Thiago Adams a écrit :
> On Monday, July 25, 2022 at 10:05:00 PM UTC-3, Keith Thompson wrote:
>> Thiago Adams <thiago...@gmail.com> writes:
>>> On Monday, July 25, 2022 at 6:50:41 PM UTC-3, Keith Thompson wrote:
>>>> Thiago Adams <thiago...@gmail.com> writes:
>>>>> On Monday, July 25, 2022 at 5:49:30 PM UTC-3, Thiago Adams wrote:
>>>>>> It's hard to believe how nullptr was accepted.
>>>>>> https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3039.htm
>>>>>> The same for auto and constexpr.
>>>>>
>>>>> In 2018 I suggested nullptr
>>>>>
>>>>> https://groups.google.com/g/comp.lang.c/c/YJmom4rC2FI/m/DJzGmwXmCQAJ
>>>>>
>>>>> In 2019 I replied my own message saying that was a bad idea.
>>>>> https://groups.google.com/g/comp.lang.c/c/YJmom4rC2FI/m/Daz0AvxHAwAJ
>>>>>
>>>>> I agree with myself from 2019.
>>>>> "
>>>>> One difference between adding _Bool into the language is that BOOL
>>>>> was never added into the language headers. (Am I right? I didn't find
>>>>> BOOL or TRUE FALSE at the language specification).
>>>>>
>>>>> On the other hand if you search for NULL at the standard you will
>>>>> find that NULL is defined in stddef.h
>>>>>
>>>>> This means that adding _Bool didn't added a new way to declare booleans,
>>>>> but adding nullptr will create this confusion that is two ways of
>>>>> writing code that means NULL.
>>>>>
>>>>> In C we also have different ((void*)0) conversion rules compared with
>>>>> C++ that is more strict.
>>>>>
>>>>> Then for C, I believe that the literal that corresponds nullptr already
>>>>> exists and it is ((void*)0).
>>>>>
>>>>> What could be done is adding flags to static analysis to decide what
>>>>> to do with ((void*)0) conversions.
>>>>> "
>>>> I don't see the problem. There are already arbitrarily many ways to
>>>> write a null pointer constant in C. For example, '\0' '-'-'-', and
>>>> 0x0ULL are all null pointer constants.
>>>>
>>>> A null pointer constant can be of any integer type, or of type void*.
>>>>
>>>> Adding nullptr and nullptr_t adds one more form of null pointer
>>>> constant, and an unambiguous type for nullptr. Of course NULL and
>>>> (void*)0 are still valid, because invalidating them would break tons of
>>>> existing code -- but nullptr is the new preferred way to write a null
>>>> pointer constant. Old code is still valid, but new code can be cleaner
>>>> -- and if a user writes nullptr, there's no question that it was
>>>> *intended* to be a null pointer constant, which could result in clearer
>>>> diagnostic messages.
>>>>
>>>> (It's likely that if the language were being defined from scratch,
>>>> nullptr would be the *only* way to write a null pointer constant. The
>>>> stuff about using integer constant expressions exists only for backward
>>>> compatibility, and we're stuck with it.)
>>>>
>>>
>>> I cannot see any problem with (void*) 0.
>>>
>>> Apparently this was considered but I didn't found details about the problem.
>>>
>>> "After WG14 refused a specification for a simple macro with value (void*)0, as well as a sophisticated
>>> version with an incomplete type and with a rewriting approach for many contexts, this new version tries
>>> a middle ground."
>> I think what WG14 refused was defining nullptr as a macro expanding to
>> ((void*)0). Given that NULL is commonly defined that way, there
>> wouldn't have been much point.
>>> I never see anyone complaining or having bugs with NULL. And the original motivation
>>> for C++ was different.
>> One example: The (POSIX, not ISO C) execl() function requires its last
>> argument to be a null pointer, marking the end of the arguments.
>>
>> int execl(const char *pathname, const char *arg, ...
>> /* (char *) NULL */);
>>
>> If you don't cast the NULL argument to an appropriate type, you have
>> undefined behavior, because it can be of integer type (typically int if
>> NULL is defined as 0).
>>
>> That particular problem could be addressed by requiring NULL to be
>> defined as exactly ((void*)0). I don't know whether that would leave
>> problems, but that could just be a lack of imagination on my part.
>> (Incidentally, C23 updates the section on parenthesized expressions to
>> make it clear that a parenthesized null pointer constant is a null
>> pointer constant.)
>>
>> Just as a matter of personal preference, I like the idea of having a
>> null pointer constant built into the language, as a lot of other
>> languages do. Note that with nullptr as a keyword, you don't have to
>> include any header to get a null pointer constant (or remember which
>> headers define NULL).
>> -- 
>> Keith Thompson (The_Other_Keith) Keith.S.T...@gmail.com
>> Working, but not speaking, for Philips
>> void Void(void) { Void(); } /* The recursive call of the void */
> 
> I would like to have NULL as keyword and defined as ((void*) 0).

I think the whole idea with C is to break as little existing code as 
possible.

Since NULL was never required to be exactly '(void *) 0' before, making 
it so in C23 would thus potentially break existing code. (Not saying 
that the code it would potentially break would not be questionable, but 
just the way it is.)

So, I get the idea of defining a new keyword here and not "breaking" the 
existing NULL. Adding new 'features' is OK, changing the definition of 
an existing feature in the standard is a lot more difficult. That's 
actually what has made the strength of C and I can understand why the 
commitee wouldn't want to break that.

With that said, if anything, the existence itself of a "null" pointer is 
questionable. It's usually used as an "invalid" pointer (guaranteed to 
be unambiguously invalid), but the fact its value is tied to '0' (and I 
don't think nullptr changes this?) can be problematic. I think the 
underlying value should be made platform-dependent. If that's what 
nullptr is, good, but I am not sure.

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

New features added into C23 standard Thiago Adams <thiago.adams@gmail.com> - 2022-07-22 12:32 -0700
  Re: New features added into C23 standard Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-07-22 23:15 +0100
  Re: New features added into C23 standard Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-07-23 01:31 -0700
    Re: New features added into C23 standard gazelle@shell.xmission.com (Kenny McCormack) - 2022-07-23 10:10 +0000
  Re: New features added into C23 standard Thiago Adams <thiago.adams@gmail.com> - 2022-07-25 13:49 -0700
    Re: New features added into C23 standard Thiago Adams <thiago.adams@gmail.com> - 2022-07-25 13:57 -0700
      Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-25 14:50 -0700
        Re: New features added into C23 standard Thiago Adams <thiago.adams@gmail.com> - 2022-07-25 15:51 -0700
          Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-25 18:04 -0700
            Re: New features added into C23 standard Thiago Adams <thiago.adams@gmail.com> - 2022-07-25 19:23 -0700
              Re: New features added into C23 standard Opus <ifonly@youknew.org> - 2022-07-26 05:13 +0200
                Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-07-25 23:36 -0400
                Re: New features added into C23 standard Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-07-25 21:52 -0700
                Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-26 11:44 -0700
              Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-26 11:39 -0700
          Re: New features added into C23 standard David Brown <david.brown@hesbynett.no> - 2022-07-30 14:42 +0200
            Re: New features added into C23 standard scott@slp53.sl.home (Scott Lurndal) - 2022-07-30 15:18 +0000
              Re: New features added into C23 standard Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-07-30 09:13 -0700
            Re: New features added into C23 standard Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-07-30 17:31 +0100
              Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-30 16:46 -0700
            Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-30 14:36 -0700
              Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-07-30 18:15 -0400
                Re: New features added into C23 standard Kaz Kylheku <480-992-1380@kylheku.com> - 2022-07-30 23:28 +0000
                Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-31 16:48 -0700
                Re: New features added into C23 standard Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-07-31 22:42 -0700
                Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-31 23:25 -0700
                Re: New features added into C23 standard Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-01 00:10 -0700
                Re: New features added into C23 standard David Brown <david.brown@hesbynett.no> - 2022-08-01 09:55 +0200
                Re: New features added into C23 standard Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-01 20:17 +0100
              Re: New features added into C23 standard Kaz Kylheku <480-992-1380@kylheku.com> - 2022-07-30 23:21 +0000
        Re: New features added into C23 standard Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-07-25 22:59 -0700
          Re: New features added into C23 standard Öö Tiib <ootiib@hot.ee> - 2022-07-26 00:48 -0700
            Re: New features added into C23 standard Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-07-26 02:08 -0700
              Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-07-26 06:59 -0400
              Re: New features added into C23 standard Öö Tiib <ootiib@hot.ee> - 2022-07-26 04:02 -0700
                Re: New features added into C23 standard Vir Campestris <vir.campestris@invalid.invalid> - 2022-07-29 21:18 +0100
                Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-29 16:55 -0700
              Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-26 11:51 -0700
            Re: New features added into C23 standard David Brown <david.brown@hesbynett.no> - 2022-07-31 11:12 +0200
              Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-07-31 07:40 -0400
                Re: New features added into C23 standard Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-07-31 17:40 +0100
                Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-07-31 12:56 -0400
                Re: New features added into C23 standard Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-07-31 19:28 +0100
                Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-07-31 14:52 -0400
                Re: New features added into C23 standard Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-07-31 21:35 +0100
                Re: New features added into C23 standard Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-08-15 23:24 -0700
                Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-31 16:57 -0700
                Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-31 16:55 -0700
                Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-07-31 20:09 -0400
                Re: New features added into C23 standard Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-08-15 22:52 -0700
                Re: New features added into C23 standard David Brown <david.brown@hesbynett.no> - 2022-08-16 09:21 +0200
                Re: New features added into C23 standard Philipp Klaus Krause <pkk@spth.de> - 2022-08-16 09:32 +0200
                Re: New features added into C23 standard David Brown <david.brown@hesbynett.no> - 2022-08-16 11:06 +0200
                Re: New features added into C23 standard Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-08-15 23:17 -0700
                Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-08-17 20:11 -0400
                Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-17 20:08 -0700
                Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-08-17 23:19 -0400
                Re: New features added into C23 standard Kaz Kylheku <480-992-1380@kylheku.com> - 2022-08-18 07:03 +0000
                Re: New features added into C23 standard Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-08-23 09:43 -0700
                Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-23 11:02 -0700
                Re: New features added into C23 standard Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-08-23 13:40 -0700
          Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-07-26 07:04 -0400
            Re: New features added into C23 standard Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-07-26 05:24 -0700
              Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-07-26 22:30 -0400
                Re: New features added into C23 standard Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-07-29 00:02 +0100
                Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-07-28 21:20 -0400
                Re: New features added into C23 standard William Ahern <william@25thandClement.com> - 2022-07-28 19:36 -0700
                Re: New features added into C23 standard scott@slp53.sl.home (Scott Lurndal) - 2022-07-29 16:39 +0000
                Re: New features added into C23 standard Richard Damon <Richard@Damon-Family.org> - 2022-07-29 18:55 -0400
                Re: New features added into C23 standard Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-07-29 15:17 +0100
          Re: New features added into C23 standard scott@slp53.sl.home (Scott Lurndal) - 2022-07-26 13:27 +0000
          Re: New features added into C23 standard Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-07-26 11:47 -0700
            Re: New features added into C23 standard Kaz Kylheku <480-992-1380@kylheku.com> - 2022-07-26 20:27 +0000
              Re: New features added into C23 standard Philipp Klaus Krause <pkk@spth.de> - 2022-08-16 08:42 +0200
  Re: New features added into C23 standard Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-26 05:37 +0200
    Re: New features added into C23 standard Lynn McGuire <lynnmcguire5@gmail.com> - 2022-07-28 16:47 -0500
      Re: New features added into C23 standard Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-29 07:14 +0200
        Re: New features added into C23 standard Vir Campestris <vir.campestris@invalid.invalid> - 2022-07-29 21:21 +0100
  Re: New features added into C23 standard Grant Mulholland <grantlmul@gmail.com> - 2022-08-13 22:21 -0700
    Re: New features added into C23 standard Lynn McGuire <lynnmcguire5@gmail.com> - 2022-08-15 21:21 -0500
      Re: New features added into C23 standard Bonita Montero <Bonita.Montero@gmail.com> - 2022-08-16 08:39 +0200
    Re: New features added into C23 standard Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-08-15 22:54 -0700
    Re: New features added into C23 standard Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-08-18 12:03 -0700
      Re: New features added into C23 standard "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2022-08-18 12:56 -0700
      Re: New features added into C23 standard William Ahern <william@25thandClement.com> - 2022-08-18 16:07 -0700
        Re: New features added into C23 standard Thiago Adams <thiago.adams@gmail.com> - 2022-08-18 18:47 -0700
          Re: New features added into C23 standard Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-08-18 20:23 -0700

csiph-web