こんにちは、山本です。

> うまくいったと思ったのですが、クリーンビルドしたら Win32API のコンパイルから
> 先に進まなくなってしまいました・・・・

原因がわかりました(と思います) CharNext(p) を p + 1 の代わりに使ってましたが、
*p == '\0' のとき、CharNext は p をそのまま返すので、正確には挙動が異なりました。
これを *p ? CharNext(p) : p + 1 に変更したところ、コンパイルが無事とおりました。

これからマクロを整理しようと思うのですが、DJGPP や EMX の mblen は、どのような挙動をしますか?
(Windows では mblen("ab", MB_CUR_MAX)が-1 を返すのですが・・・・)