l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
Page last updated:
2002 Jul 26 18:45

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] behind the scenes of static
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] behind the scenes of static


I think this question is regarding C, right?

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

That's my understanding.

Declaring global variables and functions as "static" keeps the scope of
the variable/function to the file.  I'm no compiler writer, but this could
be done simply by compiling the file, then removing the static symbol
names.  If that's how things are done, this would be a task done by the
compiler, not the linker.

Declaring local variables as static makes the variable same as global, but
the variable name is resolvable only from the local scope.  Again, I'm not
a compiler writer, but I'd think static local variables would be
implemented as same as a global variable, but without exposing the symbol
name outside the scope.  Maybe there's some help from the linker to
implement this, but I'd think it'd be possible to implement it using some
compiler tricks.


On Fri, 26 Jul 2002, Peter Jay Salzman wrote:

> 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
> _______________________________________________
> vox-tech mailing list
> vox-tech@lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech

Mark K. Kim
PGP key available upon request.

vox-tech mailing list

LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
Sunset Systems
Who graciously hosts our website & mailing lists!