#ifndef _FEATURES_H #define _FEATURES_H #ifdef _ALL_SOURCE #define _GNU_SOURCE 1 #endif #if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \ && !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \ && !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__) #define _BSD_SOURCE 1 #define _XOPEN_SOURCE 700 #endif #if __STDC_VERSION__ >= 199901L #define __restrict restrict #elif !defined(__GNUC__) #define __restrict #endif #if __STDC_VERSION__ >= 199901L || defined(__cplusplus) #define __inline inline #endif #if __STDC_VERSION__ >= 201112L #elif defined(__GNUC__) #define _Noreturn __attribute__((__noreturn__)) #else #define _Noreturn #endif /* Convenience macros to test the versions of glibc and gcc. Use them like this: #if __GNUC_PREREQ (2,8) ... code requiring gcc 2.8 or later ... #endif Note - they won't work for gcc1 or glibc1, since the _MINOR macros were not defined then. */ #if defined __GNUC__ && defined __GNUC_MINOR__ # define __GNUC_PREREQ(maj, min) \ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) #else # define __GNUC_PREREQ(maj, min) 0 #endif #include #endif