For example suppose fooc calls functions in libxa and

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: compiler allocates space in .data or .bss for each definition and creates a local linker symbol in the symbol table with a unique name. For example, suppose a pair of functions in the same module define a static local variable x: 1 2 3 4 5 6 7 8 9 10 11 int f() { static int x = 0; return x; } int g() { static int x = 1; return x; } In this case, the compiler allocates space for two integers in .bss and exports a pair of unique local linker symbols to the assembler. For example, it might use x.1 for the definition in function f and x.2 for the definition in function g. New to C? C programmers use the static attribute to hide variable and function declarations inside modules, much as you would use public and private declarations in Java and C++. C source files play the role of modules. Any global variable or function declared with the static attribute is private to that module. Similarly, any global variable or function declared without the static attribute is public, and can be acce...
View Full Document

Ask a homework question - tutors are online