diff --git a/src/macros.hpp b/src/macros.hpp index b5c38c151c778c65d00e5bdcad6af356c9ee80e6..16768eac10aef15e5b02d7aa4a9a18e4cd1a1fdf 100644 --- a/src/macros.hpp +++ b/src/macros.hpp @@ -15,6 +15,15 @@ #define ATTR_LIKELY(x) __builtin_expect((x), 1) #define ATTR_UNLIKELY(x) __builtin_expect((x), 0) +#define COMPILER_PRAGMA(x) _Pragma(#x) + +#define COMPILER_SUPRESS(flag) \ + COMPILER_PRAGMA(GCC diagnostic push) \ + COMPILER_PRAGMA(GCC diagnostic ignored flag) + +#define COMPILER_RESTORE(flag) \ + COMPILER_PRAGMA(GCC diagnostic pop) // flag + #else #define ATTR_NONNULL_ALL @@ -30,6 +39,10 @@ #define ATTR_LIKELY(x) (x) #define ATTR_UNLIKELY(x) (x) +#define COMPILER_PRAGMA(x) +#define COMPILER_SUPRESS(flag) +#define COMPILER_RESTORE(flag) + #endif #define MARK_UNUSED(x) (void)(x)