В чем разница между «локальными символами компоновщика» и «локальными переменными программы»? - PullRequest
3 голосов
/ 04 марта 2010

Я хочу знать разницу между «Локальными символами компоновщика» и «Локальными переменными программы»?

Я читаю книгу, в которой есть:

альтернативный текст http://img682.imageshack.us/img682/9816/symbols.jpg

Что каждый из них значит? Есть примеры?

Ответы [ 2 ]

3 голосов
/ 04 марта 2010
/* This function has global scope within this file (module). It is represented 
 * by a "local linker symbol", since the linker will need to resolve its address 
 * if it is referenced by any other function.
 */
static void some_function()
{
    /* These "local program variables" are of no interest to the linker 
     * since they are not visible outside the current function, so no other 
     * part of the program can possibly reference them.
     */
    int a, b, c;
}
0 голосов
/ 14 мая 2015

Символы локального компоновщика определяются и используются исключительно модулем.

По существу статическая переменная и функция являются символами компоновщика, и эти переменные или функции не видны другому модулю, кроме самого себя, и эти переменные и функции включены в таблицу символов как локальный символ в модуле перемещаемого объекта.

Локальные переменные - это переменные, определенные локально, что означает, что они не являются глобальными переменными.

...