Liste des Groupes | Revenir à cl c |
On 22/05/2024 17:55, David Brown wrote:I use static assertions everywhere I can. I used them long before C11 added them to the language, using a somewhat messy macro to force an error if the assertion fails. They catch mistakes, they document assumptions, they make code clearer to the reader. And they do so with zero cost in code space or run-time, and no more effort than writing a comment. I find it hard to understand why anyone would actively choose not to use them.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.So I'm currently writing some code (you can follow my progress on github, it is a new branch in the Baby X resource compiler project). And it's just standard well understood algorithm code to manipulate XML trees. And I certainly don't feel the neeed for static_assert.
>
<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.
>
But even boolean type and const.Bool is much more than "int 0" and "int 1". And it is significantly clearer in code. (Sometimes, of course, a specific enumerated type is clearer than bool or int.)
Of course quite alot of the functions don't actually change the structures they are passed. But is littering the code with const going to help? And why do you really need a boolean when an int can hold either a zero or non-zero value?I want a language with the features I need and that help me to write good clear code. Minimal is not helpful, any more than needlessly complex is helpful.
And don't you just want a pared down, clean language?
Les messages affichés proviennent d'usenet.