gccの拡張文法、1995年時点だとあまり使うなっていう話があったけど(確かに自分がプログラマーやってた時代は割と禁忌な扱いだった)、イマドキのCとしてはどこまで許容されるんだろう。
gcc(Gnu C Compiler)の拡張文法(1995/10/21) http://cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/gccextend.html
流石に三項演算子の二項目目の省略は…
n = (n < max) ? n : max;
n = (n < max) ? : max;
こういうコードなら別に省略しなくても良いのでは?という気がしなくもなく。省略したい気持ちも分からなくはないけど。
発端はswitch~caseのcase 0x00 ... 0x7f:というのを使ったこと。これを使わないとなると、defaultで受けてif文で範囲見て処理を分ける…けど、defaultの先にも処理の記述があるとめんどいよねという時にこの拡張文法は結構ありがたいなって。
まあ、時代が戻ることは無いはずなので…clangもgccの拡張文法がそれなりに通るし、可読性が悪くならなければちっとは使ってみても良いのかもしれない(C11, C17とかで規格化されているなら遠慮する必要も無いし)。
C11以降のモダンな文法、そういえばちゃんと知らないから…何かの折に知っておきたいな。