On 2006-07-03 20:06, Mike Meyer <[EMAIL PROTECTED]> wrote:
> In <[EMAIL PROTECTED]>, James Bailie <[EMAIL PROTECTED]> typed:
> > Randall Hyde wrote:
> >  > This kind of gives me the impression that "getc" is defined a bit
> >  > differently under FreeBSD than other environments?  Any ideas?
> > Yes.  It's defined as a macro.
>
> Linux says that getc "may be implemented as a macro". Anything that
> needs a function should be using fgetc, not getc. But

The C99 standard (actually the latest public draft[1]) allows
getc() to be a macro:

[1] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
    from http://www.open-std.org/jtc1/sc22/wg14/www/standards

|     ยง7.19.7.5 The getc function
|   
|     Synopsis
|   
|   1         #include <stdio.h>
|             int getc(FILE *stream);
|   
|     Description
|   
|   2 The getc function is equivalent to fgetc, except that if it is
|     implemented as a macro, it may evaluate stream more than once,
|     so the argument should never be an expression with side
|     effects.

This means one shouldn't depend on getc() being a function.

_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to