[vox-tech] behind the scenes of static

Peter Jay Salzman vox-tech@lists.lugod.org
Fri, 26 Jul 2002 18:05:47 -0700


i'm well aware of what the static declaration does from a pragmatic POV,
but i've always wondered what the connection was between static external
and static automatic objects.

it seems like it does fundamentally different things.  declaring
external variable and function names as being static seems like a
linker-ish directive: keeping the names at filescope seems like
something a linker would do.

in contrast, declaring automatic variable static seems like a runtime
thing.  i *think* the variable allocation is done in the heap, rather
than the stack, since the variables stick around even when the function
stack frame is released.

the apparent difference always bugged me, but i never questioned it.

what is the underpinning commonality between declaring external objects
as static and declaring automatic objects as being static?  is there
one?

or do we just use the same keyword to denote two very different things?

pete

-- 
GPG Fingerprint: B9F1 6CF3 47C4 7CD8 D33E  70A9 A3B9 1945 67EA 951D