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 #define __REDIR(x,y) __typeof__(x) x __asm__(#y) 39 40 #endif 41