Deutsch   English   Français   Italiano  
<vm8cea$2uq20$8@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!eternal-september.org!.POSTED!not-for-mail
From: Julio Di Egidio <julio@diegidio.name>
Newsgroups: comp.lang.c
Subject: Re: So You Think You Can Const?
Date: Wed, 15 Jan 2025 14:15:53 +0100
Organization: A noiseless patient Spider
Lines: 76
Message-ID: <vm8cea$2uq20$8@dont-email.me>
References: <vljvh3$27msl$1@dont-email.me> <20250107130809.661@kylheku.com>
 <vlm0hf$2dkpd$1@dont-email.me> <87a5c15ob0.fsf@bsb.me.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 15 Jan 2025 14:15:55 +0100 (CET)
Injection-Info: dont-email.me; posting-host="2563c1350cfe2ddd1cd2f0f3cf044725";
	logging-data="3106880"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18gy0BXGPMwGgUoKh6buZ78Zu9vT04pwAo="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:Ev0cFgsU/nZ4Se2BjS2UP6Mgmcw=
Content-Language: en-GB
In-Reply-To: <87a5c15ob0.fsf@bsb.me.uk>
Bytes: 3659

On 08/01/2025 16:16, Ben Bacarisse wrote:
> Julio Di Egidio <julio@diegidio.name> writes:
> 

>> Overall, I am surmising this and only this might go write-protected:
>>
>>    MyStruct_t const T = {...};
> 
> Yes, though you should extend your concern beyond what might be

You piece of fraudulent, incompetent, then always nazi-retarded shit, 
now you get it?  No, since you incompetent piece of shit indeed don't 
even know half of it.  I just hope you aren't teaching, you piece of 
ungodly shit.

Ah, and I was just quoting from an answer I had got, you piece of 
nazi-retarded ungodly fraudulent nazi-retarded shit...

-Julio

> write-protected.  Modifying an object whose type is const qualified is > undefined, even if the object is in writable storage.  A compiler may
> assume that such an object has not changed because in a program that has
> undefined behaviour, all bets are off.  For example, under gcc with
> almost any optimisation this program prints 42:
> 
>    #include <stdio.h>
>     
>    void f(const int *ip)
>    {
>         *(int *)ip = 0;
>    }
>     
>    int main(void)
>    {
>         const int a = 42;
>         f(&a);
>         printf("%d\n", a);
>    }
> 
>> While this one allocates a "byte-array", i.e. irrespective of how the
>> pointer we are assigning it is declared:
>>
>>    MyStruct_t const *pT = malloc(...);
>>
>> Is my understanding (to that point) correct?
> 
> Technically you get an object with no effective type.  David's reply
> included some references to find out more about the effective type of an
> object, but it is safe to say that these only come into play if you are
> messing about with the way you access the allocated storage (for example
> accessing it as a MyStruct but then later as a floating point object).
> 
> More relevant to a discussion of const is to ask what you plan to do
> with pT since you can't (without a cast) assign any useful value to the
> allocated object.
> 
> It is generally better to use a non const-qualified pointer for the
> allocation but, when using the pointer, to pass it to functions that use
> the right type depending on whether they modify the pointed-to object or
> not.  For example:
> 
>    MyStack *sp = malloc(*sp);
>    ...
>    stack_push(sp, 99);
>    ...
>    if (stack_empty(sp)) ...
>    ...
>    stack_free(sp);
> 
> we would have
> 
>    void stack_push(MyStack *sp, int v) { ... }
>    bool stack_empty(MyStack const *sp) { ... }
>    void stack_free(MyStack *sp) { ... }
>