ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
20 мая
299388 Топик полностью
fk0, легенда (15.01.2012 07:33, просмотров: 101) ответил Vit на Напомните, плз, насчёт области видимости static-функции
Смысл ключевого слова static в том, что символы в ассемблерном файле объявляются не public или global. Т.е. все объекты типа static видны в пределах одного объектного файла. За исключением переменных, которые будучи объявленными внутри блока (функции) видны пределах этого блока (функции) и во всех вложенных блоках кода (функциях), и нормальных имён в ассемблере вовсе не получают (потому, что две функции могут иметь переменные с одинаковыми именами, например). И если их объявить static то это влияет на их размещение в памяти: по-умолчанию (ключевое слово auto) они размещаются на стеке, после static в сегменте .bss или .data... Последнее относится к вложенным функциям GCC. Там функция может быть (в отличии от обычного ANSI C) видна только в рамках той функции в которой она объявлена и во всех её вложенных функциях. Что вообще чрезвычайно удобная штука т.к. позволяет реализовать в C замыкания. Говорить же про видимость чего-то до конца блока некорректно, другое дело, что за обращение к незадекларированной функции можно получить warning. А с переменной сразу error.
[ZX]