C のマクロだと

for(init; condition; update) {
    // hogehoge
}

を

{
    init;
    while(condition) {
        // hogehoge
        update;
    }
}

に書き換えるみたいなことは出来ないなぁ。
構文をごちゃごちゃするのは苦手ですよ。