Path: ...!feeder1.cambriumusenet.nl!feed.tweak.nl!217.73.144.44.MISMATCH!feeder.ecngs.de!ecngs!feeder2.ecngs.de!168.119.53.7.MISMATCH!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Richard Harnden Newsgroups: comp.lang.c Subject: Re: question about nullptr Date: Tue, 9 Jul 2024 08:02:42 +0100 Organization: A noiseless patient Spider Lines: 62 Message-ID: References: <90c2181ae4c7aac8f17f076093923d5b357c43aa@i2pn2.org> Reply-To: nospam.harnden@invalid.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Tue, 09 Jul 2024 09:02:43 +0200 (CEST) Injection-Info: dont-email.me; posting-host="d2209780dcf181000707699c1bdef0b2"; logging-data="1370331"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19Vsg2JRjEjYAha6NmMu/gfF2ijywjphoc=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:gKejREphe3cacaronTo1mBNDCD0= Content-Language: en-GB In-Reply-To: Bytes: 3684 On 09/07/2024 07:17, Chris M. Thomasson wrote: > On 7/8/2024 10:42 PM, Richard Harnden wrote: >> On 06/07/2024 17:57, David Brown wrote: >>> On 06/07/2024 16:39, Richard Damon wrote: >>>> On 7/6/24 7:49 AM, Thiago Adams wrote: >>>>> If you were creating C code today and could use a C23 compiler, >>>>> would you use nullptr instead of NULL? >>>>> >>>>> I am asking because I think I will keep using NULL. >>>>> >>>>> I like nullptr semantics but I don't like to introduce new element >>>>> (nullptr) inside the code with no guarantee that the code will not >>>>> mix both. >>>>> >>>>> In the past we also didn't have a guarantee we are not mixing 0 or >>>>> NULL. >>>>> >>>>> I think the best scenario for a team guideline would be a style >>>>> warning if 0 or nullptr is used and NULL to be defined as nullptr >>>>> in a C23 compiler. >>>>> >>>> >>>> The (small) problem with 0 or NULL being use is that in a context >>>> where you THINK you are passing a pointer, but the function actually >>>> is taking an integer value, 0 or NULL (defined as a 0) passes the >>>> syntax check. >>>> >>>> If C23 REQURIED NULL to be defined as nullptr, then NULL would have >>>> been used, but as far as I know, it is still allowed to be defined >>>> as 0 (unless you also have POSIX compatibility). >>>> >>>> With POSIX Compatibility, where NULL must have the type of (void*) >>>> you also avoid the possible error, and thus the desire to use nullptr. >>> >>> I hope that defining NULL as nullptr will become common - but I would >>> be surprised to ever see it being required by C standards. >>> >>> The ideal would be for C libraries to define NULL as nullptr and for >>> C compilers to support a flag like gcc's >>> "-Wzero-as-null-pointer-constant" warning (it is currently C++ only). >>> Then people can easily eliminate >>> any mixup between integer 0 and null pointer constants by using that >>> flag and either NULL or nullptr, according to taste.  (And those who >>> don't want such checks, are not required to change.) >>> >>> >> >> So, if malloc was changed to 'returns nullptr and sets errno on >> error', will you still be able to say: >> >> if ( p == NULL ) ... >> if ( !p ) ... >> >> ? > > This of a pointer p where: > > p = 0; No, I mean when p = nullptr