I would go for 1. I haven't met incompatibility with it and is more natural. But, I think that it is a part of C++ not C standard.
I think that with dirty hacking with defines or your third option - won't gain any performance, but only pain maintaining the code.