avr-gcc でコンパイル中に、次のようなリンカ エラーが発生しました。
undefined reference to `__cxa_pure_virtual'
次のようなドキュメントを見つけました。
この
__cxa_pure_virtual
関数は、純粋仮想関数が呼び出されたときに呼び出されるエラー ハンドラーです。純粋仮想関数を持つ C++ アプリケーションを作成している場合は、独自の
__cxa_pure_virtual
エラー ハンドラー関数を指定する必要があります。例えば:
extern "C" void __cxa_pure_virtual() { while (1); }
この関数を提案どおりに定義するとエラーが修正されますが、知りたいのですが:
- この機能の目的は何か、
- なぜ自分で定義する必要があるのか
- 無限ループとしてコーディングすることが許容されるのはなぜですか?