Deutsch English Français Italiano |
<v6n36o$239h6$2@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: James Kuyper <jameskuyper@alumni.caltech.edu> Newsgroups: comp.lang.c Subject: Re: question about nullptr Date: Wed, 10 Jul 2024 18:50:00 -0400 Organization: A noiseless patient Spider Lines: 45 Message-ID: <v6n36o$239h6$2@dont-email.me> References: <v6bavg$3pu5i$1@dont-email.me> <20240706054641.175@kylheku.com> <v6bfi1$3qn4u$1@dont-email.me> <l9ciO.7$cr5e.2@fx05.iad> <877cdyuq0f.fsf@bsb.me.uk> <2ckiO.19403$7Ej.4487@fx46.iad> <87plrpt4du.fsf@bsb.me.uk> <9bCiO.7108$sXW9.3805@fx41.iad> <877cdwu9s1.fsf@nosuchdomain.example.com> <20240708222804.00001654@yahoo.com> <86le2b9ru6.fsf@linuxsc.com> <8734ojxlg7.fsf@nosuchdomain.example.com> <86msmp8fld.fsf@linuxsc.com> <87cynluekl.fsf@nosuchdomain.example.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Injection-Date: Thu, 11 Jul 2024 00:50:00 +0200 (CEST) Injection-Info: dont-email.me; posting-host="7338e67614b36e18c17f3563b3f8bed2"; logging-data="2205222"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+Xel40667IWMlCEmAVQoQX8XVOPRH2S2U=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:LGGo7OzRBZvebWRXqV0fvSe5+LY= Content-Language: en-US In-Reply-To: <87cynluekl.fsf@nosuchdomain.example.com> Bytes: 2828 On 7/10/24 17:23, Keith Thompson wrote: > Tim Rentsch <tr.17687@z991.linuxsc.com> writes: >> Keith Thompson <Keith.S.Thompson+u@gmail.com> writes: >>> Tim Rentsch <tr.17687@z991.linuxsc.com> writes: >>> [...] >>> >>>> This posting has inspired me to try using (long)0.0 >>>> whenever a null pointer constant is needed. As for >>>> example >>>> >>>> (void*){ (long)0.0 } >>>> >>>> as an argument to a variadic function where a pointer >>>> is expected. >>> >>> But surely ((void*)('/'/'/'-'/'/'/')) is more elegant. >> >> Surely not. Furthermore the form I showed has a point, >> whereas this example is roughly the equivalent of a >> first grade knock-knock joke. > > I was of course joking. I assumed you were as well. > > What is the point of (void*){ (long)0.0 }? I don't believe it's a null > pointer constant even in C23. I think you're right about that. "An integer constant expression132) ... shall only have operands that are ... compound literal constants of arithmetic type that are the immediate operands of casts. ... Cast operators in an integer constant expression shall only convert arithmetic types to integer types, ...", so (long)0.0 is permitted." While (void*) looks like a cast, in this context it is a compound literal of pointer type, which is not allowed. If he had written (void*)(long)0.0 that would not have been a problem.