片側括弧のみマクロ

#define BEGIN {
#define END }

のような括弧の対応が合わないマクロは凶悪です。
これに対応できる構造化されたマクロのアイディアが必要です。

こいつらは、ネストした括弧の中におさめることができなかったりします。

#def (#BEGIN) ({)
#def (#END) (})

と使う括弧が変えられたりして逃げたり、、、ヒアドキュメントを使って逃げたりします。さらに、括弧のズレをきっちり把握して括弧マクロとして扱えるとよいのかもしれません。

#def (#BEGIN) <<<ENDMACRO {( ENDMACRO
#def (#END) <<<ENDMACRO )} ENDMACRO

例えば、ヒアドキュメントの導入をすれば括弧の終わりにも対応できるでしょう。