Go to the documentation of this file.
7#define __has_attribute(x) 0
11#define __has_builtin(x) 0
14#if defined(__GNUC__) && defined(__GNUC_MINOR__)
15# define GIRARA_GNUC_CHECK(maj, min) \
16 (((__GNUC__ << 20) + (__GNUC_MINOR__ << 10)) >= (((maj) << 20) + ((min) << 10)))
18# define GIRARA_GNUC_CHECK(maj, min) 0
22# if GIRARA_GNUC_CHECK(2, 5) || defined(__clang__)
23# define GIRARA_PRINTF(format_idx, arg_idx) \
24 __attribute__((__format__ (__printf__, format_idx, arg_idx)))
26# define GIRARA_PRINTF(format_idx, arg_idx)
31# if defined(__GNUC__) || defined(__clang__)
32# define GIRARA_UNUSED(x) UNUSED_ ## x __attribute__((unused))
33# elif defined(__LCLINT__)
34# define GIRARA_UNUSED(x) x
36# define GIRARA_UNUSED(x) x
41# if GIRARA_GNUC_CHECK(4, 0) || __has_attribute(visibility)
42# define GIRARA_HIDDEN __attribute__((visibility("hidden")))
43# elif defined(__SUNPRO_C)
44# define GIRARA_HIDDEN __hidden
51# if GIRARA_GNUC_CHECK(4, 0) || __has_attribute(visibility)
52# define GIRARA_VISIBLE __attribute__((visibility("default")))
54# define GIRARA_VISIBLE
58#ifndef GIRARA_DEPRECATED
59# if defined(__GNUC__) || __has_attribute(deprecated)
60# define GIRARA_DEPRECATED(x) x __attribute__((deprecated))
61# define GIRARA_DEPRECATED_ __attribute__((deprecated))
63# define GIRARA_DEPRECATED(x) x
64# define GIRARA_DEPRECATED_
68#ifndef GIRARA_ALLOC_SIZE
69# if (!defined(__clang__) && GIRARA_GNUC_CHECK(4, 3)) || \
70 (defined(__clang__) && __has_attribute(__alloc_size__))
71# define GIRARA_ALLOC_SIZE(...) __attribute__((alloc_size(__VA_ARGS__)))
73# define GIRARA_ALLOC_SIZE(x)
77#ifndef GIRARA_DO_PRAGMA
78# if defined(__GNUC__) || defined(__clang__)
79# define GIRARA_DO_PRAGMA(x) _Pragma(#x)
81# define GIRARA_DO_PRAGMA(x)
85#ifndef GIRARA_IGNORE_DEPRECATED
86# define GIRARA_IGNORE_DEPRECATED \
87 GIRARA_DO_PRAGMA(GCC diagnostic push) \
88 GIRARA_DO_PRAGMA(GCC diagnostic ignored "-Wdeprecated-declarations")
91#ifndef GIRARA_UNIGNORE
92# define GIRARA_UNIGNORE \
93 GIRARA_DO_PRAGMA(GCC diagnostic pop)