Proper fix for Objective-C++ enum type errors

Add a macro which uses Clang's `__underlying_type` builtin #if __cplusplus