write attributes in a header for ease of use

this handles different compilers automatically and just provides a
common method of using the attributes. Plus, it's less characters!
This commit is contained in:
Quinn
2025-04-12 20:27:55 +02:00
committed by Quinn
parent ae565abab3
commit 40720a53c8

49
src/util/atrb.h Normal file
View File

@@ -0,0 +1,49 @@
#pragma once
// default attribute definitions (empty)
#define atrb_deprecated
#define atrb_unused
#define atrb_pure
#define atrb_const
#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(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