ブロック文といえば最後にセミコロンを付けなくても良いのは何か
しっくりこない。

構造体には付けなくちゃ駄目なのにな。

おそらく

struct {} hoge;

というケースがあるからなのだろうけど。