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 19:10

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

begin Mark K. Kim <markslist@cbreak.org> 
> Pete,
> 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.

that's too bad.  "static" (IMHO) sounds like it applies to static
automatics, but i can think of a ton of more suitable keywords for
static external objects.

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

i see what your saying, but it just seems like a more suitable task for
the linker.  the process of (resolving or) removing symbol names after
compilation just seems like more in the realm of linking.

not that *i'm* a compiler writer either...
it's too bad nobody from zworld's compiler group is on the list.  they
have to wrestle with details like this.


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

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:
EDGE Tech Corp.
For donating some give-aways for our meetings.