#define D(a) itte
として
D(a)yosi
が itteyosi ではなく itte yosi(スペースが入る)と展開されるのは
規格で決まってますか?決まってれば少しありがたいのですが。

vc6では cl /E の出力ではスペースがないが、実際のコンパイルではスペースが入ってるようです。
gccでは gcc -E も実際のコンパイルでもスペースありになってました。