Существуют способы использования __attribute__
, но они очень специфичны для вашего компилятора и кода, который написан с использованием этих не действительно портативный. С другой стороны, язык C не предоставляет никаких пусковых модулей/библиотек.
В C логически main()
- это первая функция, вызываемая ОС. Но перед вызовом main()
ОС вызывает другую функцию с именем start-up
для настройки различных переменных среды, инициализации (неинициализированных) статических переменных, создания фрейма стека (записи активации) и инициализации указателя стека на начало области стека и других задачи, которые необходимо выполнить перед вызовом main()
.
Скажите, если вы пишете код для встроенных систем, где для выполнения вышеупомянутой работы нет или минимальной ОС, вы должны изучить эти параметры, зависящие от компилятора. Помимо компиляторов GCC, Turbo-C и Microsoft C предусмотрены средства для добавления кода на конкретный аппаратный компьютер (например, 8086 машин).
IOW, пусковые модули не предназначены для программистов.
http://stackoverflow.com/questions/949890/how-can-i-perform-pre-main-initialization-in-cc-with-avr-gcc – stacker
@stacker - Вопрос, на который вы ссылаетесь, специфичен для Arduino. Во всяком случае, ответы там могут быть полезными. – mouviciel