Because it could be a definition of the next element. For example, taking it from C syntax: if you declare
struct {
...
}
main (int argc, char..
then it assumes main returns a struct. If there was a semicolon,
struct {
...
};
main (int argc, char..
then main returns an int.