Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
2 / 2 / 0
Регистрация: 24.11.2016
Сообщений: 77

Как компилятор интерпретирует static?

05.10.2017, 20:54. Показов 804. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, есть вопросы про ключевое слово static.

1. Как я понял, при определении глобальной статической переменной, компилятор делает ее анонимной и таким образом будут убраны все внешние связи с другими файлами? Если да, то как именно он делает ее анонимной, просто каким-то образом искажает ее имя во время компиляции?
2. Локальные static переменные определяются только 1 раз и размещаются в одном из сегментов bss или data? Я верно
понимаю, что также при компиляции строки с определением такой переменной в функции, эта часть не является одной из команд функции на асм, а просто создается экземпляр переменной (опять же с анонимным именем, которое видит только функция), значение которого компоновщик потом расположит по определенному адресу? И как при повторном вызове функции компилятор
пропускает строку с определением?
3. Для static функций компилятор также создает анонимное имя, всмысле искажает так, что другие файлы не видят?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2017, 20:54
Ответы с готовыми решениями:

Компилятор ругается на static переменные
Есть класс: class Node{ public: Node(void) : data(0), next(0), prev(0), first(0), last(0), size(0){} Node(const _My& Val){ ...

Как компилятор обрабатывает член класса static constexpr const char*
Привет! Наткнулся на непонятный момент class Foo { public: static constexpr const char* PTR = "value"; }; ...

Побитовые операции (программа, которая интерпретирует старшие 3 бита как некоторое число n...)
Уважаемые форумчане, нужна ваша помощь. Нужно составить программу, которая интерпретирует старшие 3 бита как некоторое число n и...

1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
05.10.2017, 21:56
Цитата Сообщение от FishZone Посмотреть сообщение
Если да, то как именно он делает ее анонимной, просто каким-то образом искажает ее имя во время компиляции?
Цитата Сообщение от FishZone Посмотреть сообщение
Для static функций компилятор также создает анонимное имя, всмысле искажает так, что другие файлы не видят?
Например, gcc добавляет L при "манглинге" имени.
Цитата Сообщение от FishZone Посмотреть сообщение
Локальные static переменные определяются только 1 раз и размещаются в одном из сегментов bss или data?
Скорее всего.

Добавлено через 9 минут
Цитата Сообщение от FishZone Посмотреть сообщение
И как при повторном вызове функции компилятор
пропускает строку с определением?
Например, условием.
Цитата Сообщение от FishZone Посмотреть сообщение
эта часть не является одной из команд функции на асм, а просто создается экземпляр переменной
Смотря как на это посмотреть.
Это же всё равно приводит к какому-то коду.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.10.2017, 21:56
Помогаю со студенческими работами здесь

Препроцессор неправильно интерпретирует команды #if #else
#define __LINUX_OS__ #if defined__LINUX_OS__ #include <unistd.h> #elif defined __WINDOWS_OS__ #include <windows.h> #else ...

Чем отличается static local variable от static global variable?
привет вроде уже ребята объясняли, но что -то я не понял.... скажите пожалуйста,чем отличается static local variable от static...

Компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7. Посоветуйте другой компилятор
Здравствуйте! Я недавно начал заниматься С++, но мой компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7 Посоветуйте какой...

Компилятор ругается, что не хватате public static void main(String Args[])
Добрый день,всё время писал в обычном notepade и как такавых проблем с компиляцией не возникало т.к проекты были не большие,но вот начал...

Как изменить свойство non-static объекта из static метода
Понимаю, что такое не задумано средствами Net Framework, но у меня из-за этого не работает одна фишка, которую я месяц писал, вообщем у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru