Scope, Storage Duration, and Linkage in C
an Introduction |
Prof. David Bernstein
|
Computer Science Department |
bernstdh@jmu.edu |
char
, int
, void
)inline
)auto
,
extern
, register
,
static
)struct
, union
,
enum
)n
is not declared
in the scope of main()
n
has file scope
n
with file
scope and an n
with local scope
n
is not
initialized.n
with file
scope and an n
with local scope
malloc()
) and
ends at deallocation (e.g., free()
)static
specifier
can be used in the declaration of a varaible with block scope
validate()
in
main()
is undefined because validate()
has internal linkageextern
== Yes:
extern
== No or static
== Yes):
= 0
or = {0}
if there is no definition in the same translation
unit)account.h
and
account.c
driver.c
that
uses the libraryaccount.h
is in
both translation unitsmultiple definition of 'acct_status'
because acct_status
has been defined in both
translation units
'acct_status' was not declared in this scope
account.c
will compile but
driver.c
won'tacct_status
is only declared in account.h
, not defined
undefined reference to 'acct_status'
because it has been declared but not defined