From 1e76f587d99662680d852261f0a0634ee32660d4 Mon Sep 17 00:00:00 2001 From: Felipe Lema <1232306+FelipeLema@users.noreply.github.com> Date: Thu, 9 May 2019 09:34:51 -0400 Subject: [PATCH] _Pragma is not recognized by vc, update yes-old-cast to clang --- enum.h | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/enum.h b/enum.h index bec50fe..f2c4e4f 100644 --- a/enum.h +++ b/enum.h @@ -14,6 +14,24 @@ #include +// in-line warning handling +#ifdef __GNUC__ +# ifdef __clang__ +# define BETTER_ENUMS_IGNORE_OLD_CAST_HEADER _Pragma("clang diagnostic push") +# define BETTER_ENUMS_IGNORE_OLD_CAST_BEGIN _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") +# define BETTER_ENUMS_IGNORE_OLD_CAST_END _Pragma("clang diagnostic pop") +# else +# define BETTER_ENUMS_IGNORE_OLD_CAST_HEADER _Pragma("GCC diagnostic push") +# define BETTER_ENUMS_IGNORE_OLD_CAST_BEGIN _Pragma("GCC diagnostic ignored \"-Wold-style-cast\"") +# define BETTER_ENUMS_IGNORE_OLD_CAST_END _Pragma("GCC diagnostic pop") +# endif +#endif +// msvc does not recognize `_Pragma` +#ifdef _MSC_VER +# define BETTER_ENUMS_IGNORE_OLD_CAST_HEADER +# define BETTER_ENUMS_IGNORE_OLD_CAST_BEGIN +# define BETTER_ENUMS_IGNORE_OLD_CAST_END +#endif // Feature detection. @@ -691,11 +709,11 @@ static ::better_enums::_initialize_at_program_start \ \ enum _putNamesInThisScopeAlso { __VA_ARGS__ }; \ \ -_Pragma("GCC diagnostic push") \ -_Pragma("GCC diagnostic ignored \"-Wold-style-cast\"") \ +BETTER_ENUMS_IGNORE_OLD_CAST_HEADER \ +BETTER_ENUMS_IGNORE_OLD_CAST_BEGIN \ BETTER_ENUMS_CONSTEXPR_ const Enum _value_array[] = \ { BETTER_ENUMS_ID(BETTER_ENUMS_EAT_ASSIGN(Enum, __VA_ARGS__)) }; \ -_Pragma("GCC diagnostic pop") \ +BETTER_ENUMS_IGNORE_OLD_CAST_END \ \ BETTER_ENUMS_ID(GenerateStrings(Enum, __VA_ARGS__)) \ \