A question about stdin, stdout and stderr
oae at intrin.UUCP
oae at intrin.UUCP
Fri Feb 20 23:29:03 AEST 1987
I have a problem. I generated a program with lex on ULTRIX and moved
that program to VMS. On VMS I got an error message from the next line:
FILE *yyin = {stdin}, *yyout = {stdout};
The VMS's C compiler didn't translate these initializations, because
stdin and stdout are variables on VMS. On ULTRIX they are constants.
Then I examined The Father, The Son and The Holy Ghost and found
the following:
1. The K&R, p 153, says:
"The file pointers stdin and stdout are pre-defined in the I/O
library as the standard input and standard output; they may be
used anywhere an object of type FILE * can be. The are constants,
however, not variables, so don't try to assign to them."
2. Harbison, Steele: A C Reference Manual, p 316, says:
"11.5.32 stdin
..., the external variable stdin will contain a stream that..."
"11.5.33 stdout
..., the external variable stdout will contain a stream that..."
3. As for I know the draft ANSI C standard says that stdin, stdout and
stderr are expressions.
So, are they constants, variables or expression? I think that The K&R
has the only right definition for stdin, stdout and stderr, the others
are wrong.
Olavi Eerola oae at intrin.uucp
Intrinsic Oy
Aleksis Kiven katu 11 C
SF-33100 Tampere, Finland +358-31-132800
More information about the Comp.lang.c
mailing list