Какова цель __cxa_pure_virtual?
1) Для чего предназначена c++ функция __cxa_pure_virtual()?
Чистые pure-virtual виртуальные функции могут c++ быть вызваны во время создания cxx / разрушения объекта. Если avr-gcc это произойдет, вызывается avr-gcc __cxa_pure_virtual(), чтобы cpp сообщить об ошибке. См. Where do "pure virtual function call" crashes come from?
2) Зачем c++ вам нужно определять это avr-gcc самостоятельно?
Обычно эта c++ функция предоставляется libstdc c++ ++ (например, в Linux), но avr-gcc avr-gcc и набор инструментов cpp Arduino не предоставляют cxx libstdc ++.
Среде разработки cxx Arduino удается избежать cxx ошибки компоновщика при сборке cpp некоторых программ, поскольку pure-virtual она компилируется с параметрами cxx "-ffunction-section avr-gcc -fdata-section" и связывает pure-virtual с "-Wl, - gc-section", что pure-virtual отбрасывает некоторые ссылки. к pure-virtual неиспользуемым символам.
3) Почему cpp допустимо кодировать __cxa_pure_virtual() как cxx бесконечный цикл?
Что ж, это cpp по крайней мере безопасно; это pure-virtual делает что-то предсказуемое. Было cpp бы полезнее прервать программу cxx и сообщить об ошибке. Бесконечный c++ цикл было бы неудобно отлаживать, если cpp только у вас нет отладчика, который c++ может прервать выполнение cpp и дать обратную трассировку pure-virtual стека.
c++
avr-gcc
pure-virtual
Какова цель __cxa_pure_virtual?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.