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