Deutsch   English   Français   Italiano  
<87frribsgs.fsf@bsb.me.uk>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.nobody.at!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Ben Bacarisse <ben@bsb.me.uk>
Newsgroups: comp.lang.c
Subject: Re: No warning at implicit removal of const. Was: relearning C: why does an in-place change to a char* segfault?
Date: Mon, 05 Aug 2024 21:54:59 +0100
Organization: A noiseless patient Spider
Lines: 76
Message-ID: <87frribsgs.fsf@bsb.me.uk>
References: <IoGcndcJ1Zm83zb7nZ2dnZfqnPWdnZ2d@brightview.co.uk>
	<20240801174026.00002cda@yahoo.com> <v8gi7i$29iu1$1@dont-email.me>
	<slrnvaorkl.34j6.candycanearter07@candydeb.host.invalid>
	<87zfpvfdk4.fsf@nosuchdomain.example.com>
	<v8ii17$2q5p1$1@dont-email.me>
	<87v80ig4vt.fsf@nosuchdomain.example.com>
	<v8jbvj$2vat1$1@dont-email.me> <87le1ed0dl.fsf@bsb.me.uk>
	<v8jp3f$321h8$1@dont-email.me> <875xsfdbhf.fsf@bsb.me.uk>
	<v8pdsn$fgau$1@dont-email.me> <87ttfzb5ar.fsf@bsb.me.uk>
	<v8rd2g$11vvn$2@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain
Injection-Date: Mon, 05 Aug 2024 22:54:59 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="d2414c6952e13c70edf3b01ba5b91a78";
	logging-data="1144494"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18uKs3vCjwJF/s0TeScQ721w/izyDXSeqE="
User-Agent: Gnus/5.13 (Gnus v5.13)
Cancel-Lock: sha1:jhfQv6RffgM90qtnQgyP1/aAEtY=
	sha1:1eqI01QN0KfhuL76ge4nknTNRkk=
X-BSB-Auth: 1.81387ac9afb2ba99e02e.20240805215459BST.87frribsgs.fsf@bsb.me.uk
Bytes: 4324

"Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:

> On 8/5/2024 4:03 AM, Ben Bacarisse wrote:
>> "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
>> 
>>> On 8/4/2024 6:06 PM, Ben Bacarisse wrote:
>>>> "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
>>>>
>>>>> On 8/2/2024 3:29 PM, Ben Bacarisse wrote:
>>>>>> "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
>>>>>>
>>>>>>> For some reason I had a sort of a habit wrt const pointers:
>>>>>>>
>>>>>>> (experimental code, no ads, raw text...)
>>>>>>> https://pastebin.com/raw/f52a443b1
>>>>>>>
>>>>>>> ________________________________
>>>>>>> /* Interfaces
>>>>>>> ____________________________________________________________________*/
>>>>>>> #include <stddef.h>
>>>>>>>
>>>>>>>
>>>>>>> struct object_prv_vtable {
>>>>>>>      int (*fp_destroy) (void* const);
>>>>>>> };
>>>>>>>
>>>>>>>
>>>>>>> struct device_prv_vtable {
>>>>>>>      int (*fp_read) (void* const, void*, size_t);
>>>>>>>      int (*fp_write) (void* const, void const*, size_t);
>>>>>>> };
>>>>>> Why?  It seems like an arbitrary choice to const qualify some pointer
>>>>>> types and some pointed-to types (but never both).
>>>>>
>>>>> I just wanted to get the point across that the first parameter, aka, akin
>>>>> to "this" in C++ is a const pointer. Shall not be modified in any way shape
>>>>> or form. It is as it is, so to speak:
>>>>>
>>>>> void foo(struct foobar const* const self);
>>>>>
>>>>> constant pointer to a constant foobar, fair enough?
>>>> No.  If you intended a const pointer to const object why didn't you
>>>> write that?  My point was that the consts seems to be scattered about
>>>> without any apparent logic and you've not explained why.
>>>>
>>>>>>> ;^)
>>>>>> Does the wink mean I should not take what you write seriously?  If so,
>>>>>> please ignore my question.
>>>>>
>>>>> The wink was meant to show my habit in basically a jestful sort of
>>>>> way.
>>>> Your habit of what?
>>>
>>> To write the declaration with names and the const access I want, so:
>>>
>>> extern void (void const* const ptr);
>>>
>>> void (void const* const ptr)
>>> {
>>>     // ptr is a const pointer to a const void
>>> }
>> I don't think you are following what I'm, saying.  If you think there
>> might be some value in finding out, you could as a few questions.  I
>> won't say it again ;-)
>
> I must be misunderstanding you. My habit in such code was to always make
> the "this" pointer wrt some of my "object" oriented code a const
> pointer. This was always the first parameter:
>
> extern void foobar(void const* const ptr);

OK.  So I conclude you don't want to know what I was saying.  That's
fine.  It was a trivial point.

-- 
Ben.