Lessico IT › Programmazione › Simbolo weak

Simbolo weak

Programmazione Svenska → Aggiornato: 2026-11-03

Una definizione che il linker usa solo se non compare un'altra definizione «forte» dello stesso nome.

GCC e Clang lo scrivono __attribute__((weak)) e ELF lo supporta in modo nativo. Il codice embedded ne fa largo uso: i file di startup CMSIS definiscono ogni gestore di interrupt come alias weak di un Default_Handler che si limita a ciclare all'infinito. Se scrivi il tuo USART1_IRQHandler, vince il tuo; se non ne scrivi nessuno, l'interrupt finisce nel ciclo invece di far fallire il link.

Il rovescio della medaglia è che un errore di battitura, USART1_IRQhandler, o un extern "C" dimenticato in C++ compila senza un lamento. Il programma si pianta poi in Default_Handler la prima volta che l'interrupt scatta, regalando una delle sessioni di debug più sconcertanti del mestiere.

← Torna al lessico