1 #ifndef _ANSIDECL_H 2 #define _ANSIDECL_H 3 4 #ifndef PTR 5 #ifndef __STDC__ 6 #define PTR char * 7 #else 8 #define PTR void * 9 #endif 10 #endif 11 12 #ifndef PARAMS 13 #if !defined(__STDC__) 14 #define PARAMS(ARGS) ARGS 15 #else 16 #define PARAMS(ARGS) () 17 #endif 18 #endif 19 20 #ifndef __attribute__ 21 # if !defined __GNUC__ || !defined __GNUC_MINOR__ 22 # define __attribute__(x) 23 # elif (__GNUC__ * 1000 + __GNUC_MINOR__) < 2007 24 # define __attribute__(x) 25 # endif 26 #endif 27 28 /* Attribute __malloc__ on functions was valid as of gcc 2.96. */ 29 #ifndef ATTRIBUTE_MALLOC 30 # if (__GNUC__ * 1000 + __GNUC_MINOR__) >= 2096 31 # define ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) 32 # else 33 # define ATTRIBUTE_MALLOC 34 # endif /* GNUC >= 2.96 */ 35 #endif /* ATTRIBUTE_MALLOC */ 36 37 /* Attribute __const__ on functions was valid as of gcc 2.96. */ 38 #ifndef ATTRIBUTE_CONST 39 # if (__GNUC__ * 1000 + __GNUC_MINOR__) >= 2096 40 # define ATTRIBUTE_CONST __attribute__ ((__const__)) 41 # else 42 # define ATTRIBUTE_CONST 43 # endif /* GNUC >= 2.96 */ 44 #endif /* ATTRIBUTE_CONST */ 45 46 /* Attribute __pure__ on functions was valid as of gcc 2.96. */ 47 #ifndef ATTRIBUTE_PURE 48 # if (__GNUC__ * 1000 + __GNUC_MINOR__) >= 2096 49 # define ATTRIBUTE_PURE __attribute__ ((__pure__)) 50 # else 51 # define ATTRIBUTE_PURE 52 # endif /* GNUC >= 2.96 */ 53 #endif /* ATTRIBUTE_PURE */ 54 55 #ifndef ATTRIBUTE_UNUSED 56 # define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) 57 #endif /* ATTRIBUTE_UNUSED */ 58 59 #ifndef ATTRIBUTE_NORETURN 60 # define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) 61 #endif /* ATTRIBUTE_NORETURN */ 62 63 #ifndef ATTRIBUTE_PRINTF 64 # define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) 65 #endif /* ATTRIBUTE_PRINTF */ 66 67 #define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2) 68 #define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3) 69 #define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4) 70 #define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5) 71 #define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6) 72 73 #endif 74