C oddity -- language and/or compiler
utzoo!decvax!harpo!seismo!hao!menlo70!sytek!zehntel!tektronix!tekmdp!bronze!grahamr
utzoo!decvax!harpo!seismo!hao!menlo70!sytek!zehntel!tektronix!tekmdp!bronze!grahamr
Wed Jan 19 09:46:29 AEST 1983
PCC goes along with the reference manual where the Ritchie compiler
doesn't. I don't have a white book page number, but in section 10
of the paper "The C Programming Language -- Reference Manual" (I
think this paper appears as an appendix to the white book), note:
A C program consists of a sequence of external definitions.
An external definition declares an identifier to have
storage class extern (by default) or perhaps static, and a
specified type. The type-specifier (sec. 8.2) may also be
empty....
Also, note that in the entries in the syntax summary (sec. 18.4) the
only part of these external definitions that is required is the semicolon!
program : external-definition
external-definition : data-definition
data-definition : EXTERN[opt] type-specifier[opt]
init-declarator-list[opt] ;
PCC is the only compiler I know of which actually performs correctly.
Your example:
double a;
b,c,d;
declares a to be "extern double" and b, c, and d to be "extern int".
In the VAX code for "main(){a=b;}" note that an integer-to-floating
conversion is done:
_main: .word L16
cvtld _b,r0
movd r0,_a
ret
- Graham Ross, Tektronix
More information about the Comp.lang.c
mailing list