Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <v2lji1$1bbcp$1@dont-email.me>
Deutsch   English   Français   Italiano  
<v2lji1$1bbcp$1@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: David Brown <david.brown@hesbynett.no>
Newsgroups: comp.lang.c
Subject: Re: C23 thoughts and opinions
Date: Wed, 22 May 2024 22:11:44 +0200
Organization: A noiseless patient Spider
Lines: 98
Message-ID: <v2lji1$1bbcp$1@dont-email.me>
References: <v2l828$18v7f$1@dont-email.me>
 <00297443-2fee-48d4-81a0-9ff6ae6481e4@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 22 May 2024 22:11:45 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="c8dad87a6d02311a34acbc1393ea65af";
	logging-data="1420697"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18GRUhoOwKl8GYrWrWu0ijG9FMhN4/DVsQ="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:rICGsEqFfFfd0WXhSs45RyDKzsM=
Content-Language: en-GB
In-Reply-To: <00297443-2fee-48d4-81a0-9ff6ae6481e4@gmail.com>
Bytes: 4907

On 22/05/2024 19:42, Thiago Adams wrote:
> On 22/05/2024 13:55, David Brown wrote:
>> In an attempt to bring some topicality to the group, has anyone 
>> started using, or considering, C23 ?  There's quite a lot of change in 
>> it, especially compared to the minor changes in C17.
>>
>> <https://open-std.org/JTC1/SC22/WG14/www/docs/n3220.pdf>
>> <https://en.wikipedia.org/wiki/C23_(C_standard_revision)>
>> <https://en.cppreference.com/w/c/23>
>>
>> I like that it tidies up a lot of old stuff - it is neater to have 
>> things like "bool", "static_assert", etc., as part of the language 
>> rather than needing a half-dozen includes for such basic stuff.
>>
>> I like that it standardises a several useful extensions that have been 
>> in gcc and clang (and possibly other compilers) for many years.
>>
>> I'm not sure it will make a big difference to my own programming - 
>> when I want "typeof" or "chk_add()", I already use them in gcc.  But 
>> for people restricted to standard C, there's more new to enjoy.  And I 
>> prefer to use standard syntax when possible.
>>
>> "constexpr" is something I think I will find helpful, in at least some 
>> circumstances.
> 
> I am waiting MSVC support. There are a lot of simple features MSVC could 
> implement and deliver in small increments. But it is very slow.

MSVC is primarily a C++ compiler - the C support is more of a leftover 
from the previous century, with a few post-C90 features as an 
afterthought.  Surely for C development on Windows, rather than C++, 
you'd look for something better?

> 
> I am would use today if I had.
> 
>   - #warning
>   - [[nodiscard]]
>   - typeof
>   - digit separators
>   - bool true, false
> 

I use these today in C, except the digit separators (I use them in C++). 
  But as I say, it's nice to see them as standard rather than just 
common extensions.

> I am not planning to use:
> 
>   - enum with specific types.

I haven't found a use for these in C++, and I'm not sure I'll need them 
in C either.  I sometimes have ordinary enum types in bitfields for 
specific sizes.

>   - #elifdef

The will slightly neaten some of my pre-processor handling.  My strong 
preference for preprocessor symbols for conditional compilation and the 
like is to have symbols that are always defined, but to different 
values, and use "#if" checks rather than "#ifdef" - when combined with 
gcc warnings, it makes it far easier to catch spelling mistakes, and it 
makes it easy to jump in the code to where the symbol is defined.  But 
#ifdef checks do turn up, and this will give marginally neater code.

>   - nullptr

I am fond of nullptr in C++, and will use it in C.  Like most of the C23 
changes, it's not a big issue - after all, you get a lot of the same 
effect with "#define nullptr (void*)(0)" or similar.  But it means your 
code has a visual distinction between the integer 0 and a null pointer, 
and also lets the compiler or other static checking system check better 
than using NULL would.  (And I don't like NULL - I dislike all-caps 
identifiers in general.)

>   - auto

I use that occasionally in gcc, as __auto_type.  It can be helpful in 
macros.  I might use it more when it is standardised.  (I use auto in 
C++ a bit more often.)

>   - constexpr

I will definitely use that.  Sometimes I want a constant expression for 
things like array sizes or static initialisers, and want to calculate 
it.  constexpr gives you that without having to resort to macros.  (I'd 
perhaps be even happier if I could just use const, as I can in C++.)

> 
> Not sure
>   - empty initializer
> 

I don't see that one being a big hit, at least for me.  But I see little 
benefit in /not/ allowing it in the language, so it seems a sensible 
addition.