* Macros for controlling warnings in GCC >= 4.2 and clang >= 2.8
*/
#if defined(__GNUC__) && ((__GNUC__ * 100) + __GNUC_MINOR__) >= 402
+# define DIAG_UNKNOWN_PRAGMAS pragmas
# define DIAG_PRAGMA(_x) PRAGMA(GCC diagnostic _x)
# if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
# define DIAG_OFF(_x) DIAG_PRAGMA(push) DIAG_PRAGMA(ignored JOINSTR(-W,_x))
# define DIAG_ON(_x) DIAG_PRAGMA(warning JOINSTR(-W,_x))
# endif
#elif defined(__clang__) && ((__clang_major__ * 100) + __clang_minor__ >= 208)
+# define DIAG_UNKNOWN_PRAGMAS unknown-pragmas
# define DIAG_PRAGMA(_x) PRAGMA(clang diagnostic _x)
# define DIAG_OFF(_x) DIAG_PRAGMA(push) DIAG_PRAGMA(ignored JOINSTR(-W,_x))
# define DIAG_ON(_x) DIAG_PRAGMA(pop)
#else
+# define DIAG_UNKNOWN_PRAGMAS
# define DIAG_OFF(_x)
# define DIAG_ON(_x)
#endif