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.)