Гость Опубликовано 15 марта, 2005 Жалоба Поделиться Опубликовано 15 марта, 2005 Доброе время суток! Копался я в исходниках glibc и в файле glibc/sysdeps/standalone/brk.c наткнулся на такие строки: #ifdef HAVE_GNU_LD static #endif void __NONE_set_memvals (argc, argv, envp) ... { ... } Вопрос таков: почему функция объявляется статической только для GNU ld? Имеет ли этот спецификатор (в объявлении функций) смысл для других линкеров, кроме ld? И что он означает, вообще и конкретно применительно к GNU ld? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
EL[michlen] Опубликовано 15 марта, 2005 Жалоба Поделиться Опубликовано 15 марта, 2005 Цитата: Имеет ли этот спецификатор (в объявлении функций) смысл для других линкеров, кроме ld? Безусловно. Цитата: И что он означает, вообще и конкретно применительно к GNU ld? static - это своего рода ограничение видимости. Т.е. если в модуле А я сделаю функцию static, то из модуля B она не вызовется. static для функции означает, что это локальная функция для данного модуля. static для функции в классе С++ означает, что она может вызываться для класса, а не для объекта. static для локальной переменной означает, что она находится не в стеке и инициализируется один раз. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.