-> で書いているのを . でも許したとして、コンパイラに不都合が出てくるんだろうか?

((struct foo*)0)->member ⇒ ((struct foo*)0).member

キャストの後の括弧がなくても通すと リテラルと繋がるから面倒をおこしそうだけども
(struct foo*)0->member ⇒ (struct foo*)0.member
そういうわけでもなさそうだし