| Deutsch English Français Italiano |
|
<vsogcq$3b14s$2@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.tomockey.net!news.samoylyk.net!news.quux.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: David Brown <david.brown@hesbynett.no>
Newsgroups: comp.lang.c
Subject: Re: "A diagram of C23 basic types"
Date: Fri, 4 Apr 2025 13:39:06 +0200
Organization: A noiseless patient Spider
Lines: 94
Message-ID: <vsogcq$3b14s$2@dont-email.me>
References: <87y0wjaysg.fsf@gmail.com> <vsj1m8$1f8h2$1@dont-email.me>
<vsj2l9$1j0as$1@dont-email.me> <vsjef3$1u4nk$1@dont-email.me>
<vsjg6t$20pdb$1@dont-email.me> <vsjjd1$23ukt$1@dont-email.me>
<vsjkvb$25mtg$1@dont-email.me> <vpdHP.1828825$TBhc.94105@fx16.iad>
<vslhrm$7uv3$1@dont-email.me> <vsll4b$8mfb$3@dont-email.me>
<vslq6b$ginf$1@dont-email.me> <vsm45d$ncfh$4@dont-email.me>
<vso9fa$34vau$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 04 Apr 2025 13:39:07 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="c769e35c057c19c3049ecfc31d4accc3";
logging-data="3507356"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+3aXLfg3TFmliTs7/TaUCU5Pc/iH3f42g="
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101
Thunderbird/102.11.0
Cancel-Lock: sha1:m9T4B/lvqQlukQIgIyZ6d+nULpI=
Content-Language: en-GB
In-Reply-To: <vso9fa$34vau$1@dont-email.me>
Bytes: 4276
On 04/04/2025 11:40, Muttley@DastardlyHQ.org wrote:
> On Thu, 3 Apr 2025 15:58:05 +0200
> David Brown <david.brown@hesbynett.no> wibbled:
>> Human readers prefer clear code to comments. Comments get out of sync -
>> code does not.
>
> Thats not a reason for not using comments.
It is a reason for never using a comment when you can express the same
thing in code.
> Its very easy to understand your
> own code that you've just written - not so much for someone else or for you
> years down the line.
If that's your problem, write better code - not more comments.
Comments should say /why/ you are doing something, not /what/ you are doing.
>
>> Ignorance is curable - wilful ignorance is much more stubborn. But I
>> will try.
>
> Guffaw! You should do standup.
>
>> Let me give you an example, paraphrased from the C23 standards:
>>
>>
>> #include <stddef.h>
>>
>> enum Colours { red, green, blue };
>>
>> unsigned int colour_to_hex(enum Colours c) {
>> switch (c) {
>> case red : return 0xff'00'00;
>> case green : return 0x00'ff'00;
>> case blue : return 0x00'00'ff;
>> }
>> unreachable();
>> }
>>
>>
>> With "unreachable()", "gcc -std=c23 -O2 -Wall" gives :
>>
>> colour_to_hex:
>> mov edi, edi
>> mov eax, DWORD PTR CSWTCH.1[0+rdi*4]
>> ret
>>
>> Without it, it gives :
>>
>> colour_to_hex:
>> cmp edi, 2
>> ja .L1
>> mov edi, edi
>> mov eax, DWORD PTR CSWTCH.1[0+rdi*4]
>> .L1:
>> ret
>
> Except its not unreachable is it?
It /is/ unreachable. That's why I wrote it.
> There's nothing in C to prevent you
> calling that function with a value other than defined in the enum so what
> happens if there's a bug and it hits unreachable?
There's nothing in the English language preventing me from calling you a
"very stable genius" - but I can assure you that it is not going to happen.
> Oh thats right , its
> "undefined" ie , a crash or hidden bug with bugger all info.
Welcome to the world of software development. If I specify a function
as working for input values "red", "green", and "blue", and you choose
to misuse it, that is /your/ fault, not mine. I write the code to work
with valid inputs and give no promises about what will happen with any
other input.
>
>> Neither "// This should never be reached" nor "assert(false);" is a
>> suitable alternative.
>
> In your opinion. I would never use that example above, its just asking for
> trouble down the line.
>
> Also FWIW, putting seperators in the hex values makes it less readable to me
> not more.
>
Again, that's /your/ problem.