Ci sono modi per utilizzare __attribute__
ma quelli sono molto specifici per il compilatore e il codice che viene scritto utilizzando questi sono non davvero portatile. D'altra parte, il linguaggio C non fornisce alcun modulo/libreria di avvio.
In C, logicamente main()
è la prima funzione richiamata dal sistema operativo. Ma prima di chiamare main()
, il sistema operativo chiama un'altra funzione denominata modulo start-up
per configurare varie variabili di ambiente, inizializzare variabili non inizializzate, creare uno stack frame (record di attivazione) e inizializzare il puntatore dello stack all'inizio dell'area dello stack e altro attività che devono essere eseguite prima di chiamare main()
.
Dire se si sta scrivendo il codice per i sistemi incorporati in cui non esiste un SO minimo o minimo per eseguire il lavoro sopra citato, è necessario esplorare queste opzioni che dipendono dal compilatore. Oltre ai compilatori GCC, Turbo-C e Microsoft C fornisce funzionalità per aggiungere codice in una particolare macchina hardware (ad esempio macchine 8086).
IOW, i moduli di avvio non sono pensati per i programmatori.
fonte
2012-01-03 14:44:15
http://stackoverflow.com/questions/949890/how-can-i-forma-pre-main-initialization-in-cc-with-avr-gcc – stacker
@stacker - La domanda a cui fai riferimento è specifica per Ambiente Arduino. Ad ogni modo, le risposte potrebbero essere utili. – mouviciel