IT用語集 › プログラミング › 弱シンボル

弱シンボル

プログラミング Svenska → 更新: 2026-11-03

同じ名前の「強い」定義が他に見つからない場合にだけ、リンカが採用する定義。

GCCとClangでは __attribute__((weak)) と書き、ELF がネイティブにサポートしている。組み込みコードは大口の利用者で、CMSISのスタートアップファイルは、すべての割り込みハンドラを、無限ループするだけの Default_Handler への弱いエイリアスとして定義している。自分で USART1_IRQHandler を書けばそれが優先され、書かなければリンクエラーにならず、割り込みはループに落ちる。

裏を返せば、USART1_IRQhandler のようなタイプミスや、C++での extern "C" の付け忘れは、警告一つ出ずにコンパイルが通る。プログラムは、その割り込みが初めて発生した時点で Default_Handler に引っかかって止まる。この業界でも指折りの、途方に暮れるデバッグ体験である。

← 用語集に戻る