diff options
Diffstat (limited to 'osdep/compiler.h')
-rw-r--r-- | osdep/compiler.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/osdep/compiler.h b/osdep/compiler.h new file mode 100644 index 0000000..f565897 --- /dev/null +++ b/osdep/compiler.h @@ -0,0 +1,30 @@ +#ifndef MPV_COMPILER_H +#define MPV_COMPILER_H + +#define MP_EXPAND_ARGS(...) __VA_ARGS__ + +#ifdef __GNUC__ +#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format(printf, a1, a2))) +#define MP_NORETURN __attribute__((noreturn)) +#define MP_FALLTHROUGH __attribute__((fallthrough)) +#define MP_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +#define PRINTF_ATTRIBUTE(a1, a2) +#define MP_NORETURN +#define MP_FALLTHROUGH do {} while (0) +#define MP_WARN_UNUSED_RESULT +#endif + +// Broken crap with __USE_MINGW_ANSI_STDIO +#if defined(__MINGW32__) && defined(__GNUC__) && !defined(__clang__) +#undef PRINTF_ATTRIBUTE +#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (gnu_printf, a1, a2))) +#endif + +#ifdef __GNUC__ +#define MP_ASSERT_UNREACHABLE() (assert(!"unreachable"), __builtin_unreachable()) +#else +#define MP_ASSERT_UNREACHABLE() (assert(!"unreachable"), abort()) +#endif + +#endif |