聞く場所間違っているよ。
【初心者歓迎】C/C++室 Ver.64【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1234193151/
こちらへどうぞ。

最長トークンで分けられるので、int, *, a, ;に分けられる。
ゆえに、スペース(大抵スペースといえば、半角のスペースだろうけど)が、入らなくても問題はない。

エラーになった原因はおそらく
C89までは、ブロックの先頭でしか変数を宣言できなかったから。
すでに、aという識別子が宣言または定義されていたから。
int*a;より前でなんらかの構文エラーをそのまま引きずって、int*a;が構文エラーと見なされたから。
などなどか。