Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #387534
| Path | csiph.com!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
| Newsgroups | comp.lang.c |
| Subject | Re: question about nullptr |
| Date | Mon, 12 Aug 2024 18:10:44 -0700 |
| Organization | A noiseless patient Spider |
| Lines | 45 |
| Message-ID | <86plqdz0q3.fsf@linuxsc.com> (permalink) |
| 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=us-ascii |
| Injection-Date | Tue, 13 Aug 2024 03:10:44 +0200 (CEST) |
| Injection-Info | dont-email.me; posting-host="7741d78d7fa92162b25738c81b1a0845"; logging-data="3733603"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19uUkPqg3P3oNvFRgtQi4y3CRwdCgSyAc0=" |
| User-Agent | Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) |
| Cancel-Lock | sha1:dgORL1aL+Bno02AvGtO/dgNEFKg= sha1:0W/vnz/XMEqTUISZbrmyJWCVls8= |
| Xref | csiph.com comp.lang.c:387534 |
Show key headers only | View raw
Keith Thompson <Keith.S.Thompson+u@gmail.com> writes:
> 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.
The null pointer constant is (long)0.0, which it must be for the
compound literal to work. Besides making it obvious that (long)0.0
is a null pointer constant, the compound literal is safer than
using just a cast.
> My example is.
Your example actually has two null pointer constants: the
expression being casted, and the full expression casting a null
pointer constant to (void*). But in neither case is that especially
obvious. Also the expression you wrote is less safe. For example,
if it had been written ((void*)('/'/'/'+'/'/'/')), the result would
still be legal C, and compile without problem, but would very likely
not be what was desired. By contrast, if the compound literal had
been written (void*){ (long)1.0 }, it simply would not give a clean
compile, indicating that something is likely askew.
Back to comp.lang.c | Previous | Next — Next in thread | Find similar
Re: question about nullptr Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-08-12 18:10 -0700 Re: question about nullptr Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-08-12 18:44 -0700
csiph-web