1#ifndef _FEATURES_H 2#define _FEATURES_H 3 4#if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE) 5#define _GNU_SOURCE 1 6#endif 7 8#if defined(_DEFAULT_SOURCE) && !defined(_BSD_SOURCE) 9#define _BSD_SOURCE 1 10#endif 11 12#if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \ 13 && !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \ 14 && !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__) 15#define _BSD_SOURCE 1 16#define _XOPEN_SOURCE 700 17#endif 18 19#if __STDC_VERSION__ >= 199901L 20#define __restrict restrict 21#elif !defined(__GNUC__) 22#define __restrict 23#endif 24 25#if __STDC_VERSION__ >= 199901L || defined(__cplusplus) 26#define __inline inline 27#elif !defined(__GNUC__) 28#define __inline 29#endif 30 31#if __STDC_VERSION__ >= 201112L 32#elif defined(__GNUC__) 33#define _Noreturn __attribute__((__noreturn__)) 34#else 35#define _Noreturn 36#endif 37 38#endif 39