gpt4 book ai didi

c++ - __cxa_pure_virtual 的目的是什么?

转载 作者:IT老高 更新时间:2023-10-28 14:00:46 33 4
gpt4 key购买 nike

在使用 avr-gcc 编译时,我遇到了如下链接器错误:

undefined reference to `__cxa_pure_virtual'

我找到了this document其中指出:

The __cxa_pure_virtual function is an error handler that is invoked when a pure virtual function is called.

If you are writing a C++ application that has pure virtual functions you must supply your own __cxa_pure_virtual error handler function. For example:

extern "C" void __cxa_pure_virtual() { while (1); }

按照建议定义此函数可修复错误,但我想知道:

  • 这个函数的目的是什么,
  • 为什么我需要自己定义和
  • 为什么可以将其编码为无限循环?

最佳答案

如果在程序运行时的任何地方创建了一个未填充虚函数指针的对象,并且当调用相应的函数时,您将调用一个“纯虚函数”。

您描述的处理程序应该在您的开发环境附带的默认库中定义。如果您碰巧省略了默认库,您会发现这个处理程序未定义:链接器看到一个声明,但没有定义。那时您需要提供自己的版本。

无限循环是可以接受的,因为它是一个“响亮”的错误:您的软件的用户会立即注意到它。任何其他“响亮”的实现也是可以接受的。

关于c++ - __cxa_pure_virtual 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/920500/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com