From cad49f291231250cb44fa1a509d8f6f1cf84508e Mon Sep 17 00:00:00 2001 From: Quinn Date: Thu, 12 Jun 2025 10:50:07 +0200 Subject: [PATCH] rework attribute definitions in atrb.h --- src/util/atrb.h | 59 ++++++++++++++----------------------------------- 1 file changed, 16 insertions(+), 43 deletions(-) diff --git a/src/util/atrb.h b/src/util/atrb.h index 3124ff2..b5bb397 100644 --- a/src/util/atrb.h +++ b/src/util/atrb.h @@ -2,8 +2,22 @@ // Licensed under the MIT Licence. See LICENSE for details #pragma once - -// default attribute definitions (empty) +// define the attributes where possible +#if defined(__GNUC__) || defined(__clang__) +#define atrb(...) __attribute__(__VA_ARGS__) +#define atrb_deprecated __attribute__((depricated)) +#define atrb_unused __attribute__((unused)) +#define atrb_pure __attribute__((pure)) +#define atrb_const __attribute__((const)) +#define atrb_noreturn __attribute__((noreturn)) +#define atrb_format(...) __attribute__((format(__VA_ARGS__))) +#define atrb_nonnull(...) __attribute__((nonnull(__VA_ARGS__))) +#elif defined(_MSC_VER) +#define atrb __declspec +#define atrb_deprecated __declspec(deprecated) +#define atrb_noreturn __declspec(noreturn) +#else +#define atrb #define atrb_deprecated #define atrb_unused #define atrb_pure @@ -11,45 +25,4 @@ #define atrb_noreturn #define atrb_format() #define atrb_nonnull() - -// define the attributes where possible -#if defined(__GNUC__) || defined(__clang__) - -#if __has_attribute(deprecated) -#undef atrb_deprecated -#define atrb_deprecated __attribute__((deprecated)) -#endif - -#if __has_attribute(unused) -#undef atrb_unused -#define atrb_unused __attribute__((unused)) -#endif - -#if __has_attribute(pure) -#undef atrb_pure -#define atrb_pure __attribute__((pure)) -#endif - -#if __has_attribute(const) -#undef atrb_const -#define atrb_const __attribute__((const)) -#endif - -#if __has_attribute(noreturn) -#undef atrb_noreturn -#define atrb_noreturn __attribute__((noreturn)) -#endif - -#if __has_attribute(format) -#undef atrb_format -#define atrb_format(...) __attribute__((format(__VA_ARGS__))) -#endif - -#if __has_attribute(nonnull) -#undef atrb_nonnull -#define atrb_nonnull(...) __attribute__((nonnull(__VA_ARGS__))) -#endif -#elif defined(_MSC_VER) -#undef atrb_depatrb_deprecated -#define atrb_deprecated __declspec(deprecated) #endif