>>366
{ }にセミコロンが必要なんじゃなくて、structの宣言の終端にセミコロンが必要だから。

{ }に対してセミコロンが必要かどうか と勘違いしてないか?
>>365氏が言うように、{〜}は複数の文をまとめただけのものだから、
どこに使われるかでセミコロンが必要になるかは変わってくる。

原則としてCでは文の終端にセミコロンが必要だけど、例外として
制御文や関数等には必要ない。

それはC言語の構文規則でそう定義されているからで、
そういうものだと覚えるしかないと思う。