Pro úplnost dodám, že C23 přineslo hlavičku stdckdint.h, kde jsou funkce
ckd_add, ckd_sub, ckd_mul.
Výhodou je, že ten program pak přeložíte prakticky na každou platformu a ten jazyk na rozdíl od novějších verzí C je jednodušší, takže spíš rozumíte svým programům.
Ještě lepší je pak použít specifickou podmnožinu C89, a to Dependable C.
This is why we can't have nice things...
> ten jazyk na rozdíl od novějších verzí C je jednodušší, takže spíš rozumíte svým programům.
S tímto si dovolím zásadně nesouhlasit. C11/17 a potažmo C23 přináší do jazyka konstrukce, které dělají výsledný kód čitelnější a bezpečnější. Celková úroveň programů (včetně bezpečnosti) psaných v C by se výrazně zlepšila, pokud by všichni důsledně začali používat moderní C.
Co konkrétně myslíš? To, že odstranili VLA, které bylo přidáno jako velká novinka do C99 a které do jazyku typu C prostě vůbec nezapadá?
On je problém v tom, že moderní C v některých oblastech prostě použít nejde, není tam překladač nebo vůbec snaha přejít na jiný překladač. A i kdyby, prostě původní kód zůstane (a možná - když už překopávat, tak úplně do jiného jazyka)
- Designated initializers
- Exact-size types (<inttypes.h>)
- (C99) variable declarations anywhere within a block or file
Už jenom to, kdyby si všichni pořádně přečetli například https://inria.hal.science/hal-02383654 místo prvního vydání Herouta a měli vždy zapnuté -Wall -Wextra -Werror by dost pomohlo... :)