Wrt 2/3, would it be possible to use a "do {...} while (0)" construction, or perhaps a GCC statement expression? Those are more usual ways of handling function-like macros, and wouldn't impose any restrictions on the tests.
1/3 isn't particularly invasive, so I don't really want to bikeshed, but at the same time, compiling Wine code as C++ doesn't seem like the most productive approach, and I worry that it's going to impose more subtle or annoying restrictions in the future. I haven't looked in detail at how you're building this, but can you just compile that file as C and link it into a C++ project?