IT-словарь › Программирование › Слабый символ (weak symbol)

Слабый символ (weak symbol)

Программирование Svenska → Обновлено: 2026-11-03

Определение, которое компоновщик использует, только если не нашлось другого, «сильного» определения с тем же именем.

В GCC и Clang это записывается как __attribute__((weak)), а ELF поддерживает его нативно. Во встраиваемом коде приём в большом ходу: стартовые файлы CMSIS определяют каждый обработчик прерывания как слабый псевдоним для Default_Handler, который просто крутится в бесконечном цикле. Напишете свой USART1_IRQHandler — он победит; не напишете — прерывание попадёт в цикл, а сборка не упадёт.

Обратная сторона: опечатка — USART1_IRQhandler — или забытый extern "C" в C++ компилируются без единого предупреждения. Программа зависает в Default_Handler при первом же прерывании, и это одна из самых обескураживающих отладочных сессий, какие знает ремесло.

← Назад к словарю