質問です。
プリプロセッサの話なので微妙にCとは違うかもしれませんが…。

#define str.substring(x) MySubString(x)
という風に . を含む置換マクロは組めないのでしょうか。

'.' : マクロ定義内で指定された文字の使い方が間違っています。
と出てエラーになってしまします。
ご教授よろしくお願いいたします。