Добавить в корзинуПозвонить
Найти в Дзене
Машинное обучение

В C код может выполниться ещё до `main

()` В Linux и GCC есть constructor-функции - они запускаются автоматически до входа в main(). Выглядит почти как магия: __attribute__((constructor)) Такую функцию не нужно вызывать вручную. Компилятор сам пометит её как код, который должен выполниться при старте программы. Где это используется: - инициализация глобального состояния - подготовка shared libraries - регистрация плагинов - настройка runtime-окружения - выполнение служебного кода до основной логики Именно поэтому в C-программе не всегда всё начинается с main(). Иногда до него уже кто-то успел поработать.

В C код может выполниться ещё до `main()`

В Linux и GCC есть constructor-функции - они запускаются автоматически до входа в main().

Выглядит почти как магия:

__attribute__((constructor))

Такую функцию не нужно вызывать вручную. Компилятор сам пометит её как код, который должен выполниться при старте программы.

Где это используется:

- инициализация глобального состояния

- подготовка shared libraries

- регистрация плагинов

- настройка runtime-окружения

- выполнение служебного кода до основной логики

Именно поэтому в C-программе не всегда всё начинается с main().

Иногда до него уже кто-то успел поработать.

Наука
7 млн интересуются