__STRICT_ANSI__

Harold Hunt huntharo@msu.edu
Wed May 16 12:42:00 GMT 2001


I can't seem to understand the conditional prototyping of some functions in
Newlib's headers.

When compiling Cygwin/XFree86, which uses -ansi, which in turn defines
__STRICT_ANSI__, we get warnings about references implicitly declared
functions.

Below I have included the simplified prototyping of each offending function;
I have removed other functions declared within the same #ifndef scope for
simplicity.

It looks to me like __STRICT_ANSI__ might not be being used correctly.  Any
ideas?

Harold

Cygwin's stdio.h:
#ifndef __STRICT_ANSI__
#ifndef _REENT_ONLY
FILE *	_EXFUN(fdopen, (int, const char *));
#endif
int	_EXFUN(fileno, (FILE *));
int	_EXFUN(pclose, (FILE *));
FILE *  _EXFUN(popen, (const char *, const char *));
#endif

GNU/Linux stdio.h:
#ifdef __USE_POSIX
extern FILE *fdopen (int __fd, __const char *__modes) __THROW;
#endif

#ifdef __USE_POSIX
extern int fileno (FILE *__stream) __THROW;
#endif

#if defined __USE_POSIX2
extern FILE *popen (__const char *__command, __const char *__modes) __THROW;
extern int pclose (FILE *__stream) __THROW;
#endif


Cygwin's stdlib.h:
#ifndef __STRICT_ANSI__
#ifndef _REENT_ONLY
int     _EXFUN(mkstemp,(char *));
char *  _EXFUN(mktemp,(char *));
#endif
#endif

GNU/Linux stdlib.h:
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
extern int mkstemp (char *__template) __THROW;
#endif



More information about the Newlib mailing list