Loading...
Searching...
No Matches
Go to the documentation of this file.
16#ifndef CLIBS_ATTRIBUTES_H
17#define CLIBS_ATTRIBUTES_H
22#define HAS_ATTRIBUTE( TOK ) __has_attribute( TOK )
25#define HAS_ATTRIBUTE( TOK ) 0
29#if HAS_ATTRIBUTE( unused )
31#define UsageOptional __attribute__( ( __unused__ ) )
37#if HAS_ATTRIBUTE( format )
39#define PrintfLike( FORMAT_STRING, FIRST_VAR_ARG ) \
40 __attribute__( ( __format__( __printf__, FORMAT_STRING, FIRST_VAR_ARG ) ) )
42#define ScanfLike( FORMAT_STRING, FIRST_VAR_ARG ) \
43 __attribute__( ( __format__( __scanf__, FORMAT_STRING, FIRST_VAR_ARG ) ) )
45#define PrintfLike( FORMAT_STRING, FIRST_VAR_ARG )
46#define ScanfLike( FORMAT_STRING, FIRST_VAR_ARG )
50#if HAS_ATTRIBUTE( warn_unused_result )
52#define UseResult __attribute__( ( __warn_unused_result__ ) )
58#if HAS_ATTRIBUTE( cold )
59#define Cold __attribute__( ( __cold__ ) )
65#if HAS_ATTRIBUTE( const )
67#define Const __attribute__( ( __const__ ) )
73#if HAS_ATTRIBUTE( constructor )
75#define BeforeMain __attribute__( ( constructor ) )
77#define BeforeMain UsageOptional
81#if HAS_ATTRIBUTE( noreturn )
83#define NoReturn __attribute__( ( noreturn ) )
89#if HAS_ATTRIBUTE( deprecated )
91#define Deprecated __attribute__( ( deprecated ) )
101#define Constructor UseResult
104#define Private static
107#define LibraryDefined static UsageOptional
113#define Mathematical Const
116#if HAS_ATTRIBUTE( nonnull )
118#define NonNullParams( ... ) __attribute( ( nonnull( __VA_ARGS__ ) ) )