From b585c76ae7b34270657bd4107bc6de6c3b15ae0a Mon Sep 17 00:00:00 2001 From: Felipe Lema <1232306+FelipeLema@users.noreply.github.com> Date: Thu, 9 May 2019 13:58:38 -0400 Subject: [PATCH] skip handling -Wno-old-style-cast on old gcc compilers --- enum.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/enum.h b/enum.h index f2c4e4f..1dcb89d 100644 --- a/enum.h +++ b/enum.h @@ -14,16 +14,20 @@ #include -// in-line warning handling +// in-line, non-#pragma warning handling +// not supported in very old compilers (namely gcc 4.4 or less) #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") +# define BETTER_ENUMS_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100) +# if BETTER_ENUMS_GCC_VERSION > 40400 +# 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 #endif // msvc does not recognize `_Pragma`