Node: Multiple Definitions of External Names, Next: Limitation on Implicit Declarations, Previous: Mangling of Names, Up: Disappointments
g77
doesn't allow a common block and an external procedure or
BLOCK DATA
to have the same name.
Some systems allow this, but g77
does not,
to be compatible with f2c
.
g77
could special-case the way it handles
BLOCK DATA
, since it is not compatible with f2c
in this
particular area (necessarily, since g77
offers an
important feature here), but
it is likely that such special-casing would be very annoying to people
with programs that use EXTERNAL FOO
, with no other mention of
FOO
in the same program unit, to refer to external procedures, since
the result would be that g77
would treat these references as requests to
force-load BLOCK DATA program units.
In that case, if g77
modified
names of BLOCK DATA
so they could have the same names as
COMMON
, users
would find that their programs wouldn't link because the FOO
procedure
didn't have its name translated the same way.
(Strictly speaking,
g77
could emit a null-but-externally-satisfying definition of
FOO
with its name transformed as if it had been a
BLOCK DATA
, but that probably invites more trouble than it's
worth.)