nkeynes@185: /* Provide support for both ANSI and non-ANSI environments. */ nkeynes@185: nkeynes@185: /* Some ANSI environments are "broken" in the sense that __STDC__ cannot be nkeynes@185: relied upon to have it's intended meaning. Therefore we must use our own nkeynes@185: concoction: _HAVE_STDC. Always use _HAVE_STDC instead of __STDC__ in newlib nkeynes@185: sources! nkeynes@185: nkeynes@185: To get a strict ANSI C environment, define macro __STRICT_ANSI__. This will nkeynes@185: "comment out" the non-ANSI parts of the ANSI header files (non-ANSI header nkeynes@185: files aren't affected). */ nkeynes@185: nkeynes@185: #ifndef _ANSIDECL_H_ nkeynes@185: #define _ANSIDECL_H_ nkeynes@185: nkeynes@185: #include nkeynes@185: nkeynes@185: /* First try to figure out whether we really are in an ANSI C environment. */ nkeynes@185: /* FIXME: This probably needs some work. Perhaps sys/config.h can be nkeynes@185: prevailed upon to give us a clue. */ nkeynes@185: nkeynes@185: #ifdef __STDC__ nkeynes@185: #define _HAVE_STDC nkeynes@185: #endif nkeynes@185: nkeynes@185: #ifdef _HAVE_STDC nkeynes@185: #define _PTR void * nkeynes@185: #define _AND , nkeynes@185: #define _NOARGS void nkeynes@185: #define _CONST const nkeynes@185: #define _VOLATILE volatile nkeynes@185: #define _SIGNED signed nkeynes@185: #define _DOTS , ... nkeynes@185: #define _VOID void nkeynes@185: #define _EXFUN(name, proto) name proto nkeynes@185: #define _DEFUN(name, arglist, args) name(args) nkeynes@185: #define _DEFUN_VOID(name) name(_NOARGS) nkeynes@185: #define _CAST_VOID (void) nkeynes@185: #ifndef _LONG_DOUBLE nkeynes@185: #define _LONG_DOUBLE long double nkeynes@185: #endif nkeynes@185: #ifndef _PARAMS nkeynes@185: #define _PARAMS(paramlist) paramlist nkeynes@185: #endif nkeynes@185: #else nkeynes@185: #define _PTR char * nkeynes@185: #define _AND ; nkeynes@185: #define _NOARGS nkeynes@185: #define _CONST nkeynes@185: #define _VOLATILE nkeynes@185: #define _SIGNED nkeynes@185: #define _DOTS nkeynes@185: #define _VOID void nkeynes@185: #define _EXFUN(name, proto) name() nkeynes@185: #define _DEFUN(name, arglist, args) name arglist args; nkeynes@185: #define _DEFUN_VOID(name) name() nkeynes@185: #define _CAST_VOID nkeynes@185: #define _LONG_DOUBLE double nkeynes@185: #ifndef _PARAMS nkeynes@185: #define _PARAMS(paramlist) () nkeynes@185: #endif nkeynes@185: #endif nkeynes@185: nkeynes@185: /* Support gcc's __attribute__ facility. */ nkeynes@185: nkeynes@185: #ifdef __GNUC__ nkeynes@185: #define _ATTRIBUTE(attrs) __attribute__ (attrs) nkeynes@185: #else nkeynes@185: #define _ATTRIBUTE(attrs) nkeynes@185: #endif nkeynes@185: nkeynes@185: #endif /* _ANSIDECL_H_ */