Found this in MSDN:
_CPPRTTI
Defined for code compiled with /GR (Enable Run-Time Type Information).
_CPPUNWIND
Defined for code compiled with /GX (Enable Exception Handling).
It might worth replacing the runtime dynamic_cast check by a compile time one, don’t you think ?