Weak symbol
Een definitie die de linker alleen gebruikt als er geen andere, ‘sterke’ definitie met dezelfde naam opduikt.
GCC en Clang schrijven het als __attribute__((weak)), en ELF ondersteunt het van huis uit. Embedded code maakt er veel gebruik van: CMSIS-opstartbestanden definiëren elke interrupthandler als zwakke alias voor een Default_Handler die simpelweg eindeloos loopt. Schrijf je eigen USART1_IRQHandler en die wint; schrijf je niets, dan belandt de interrupt in de lus in plaats van dat het linken mislukt.
Keerzijde is dat een typfout — USART1_IRQhandler — of een vergeten extern "C" in C++ zonder een kik compileert. Het programma hangt dan in Default_Handler zodra de interrupt voor het eerst afgaat, goed voor een van de meer verbijsterende debugsessies die het vak te bieden heeft.