在使用avr-gcc编译时,我遇到了以下链接器错误:
undefined reference to `__cxa_pure_virtual'
我发现了这份文档,其中声明:
__cxa_pure_virtual
函数是一个错误处理程序,当调用纯虚函数时将被调用。如果您正在编写一个有纯虚函数的C++应用程序,必须提供自己的
__cxa_pure_virtual
错误处理程序函数。例如:
extern "C" void __cxa_pure_virtual() { while (1); }
按照建议定义此函数可以解决错误,但我想知道:
- 此函数的目的是什么,
- 为什么我需要自己定义它,以及
- 为什么将其编码为无限循环是可接受的?
gcc
命令时,如果您应该使用g++
命令,就可能会出现此错误;我至少犯过一次这样的错误 :) - user2023370