Я могу бросить исключения C++ от наследия C обратные вызовы?

У меня есть код C++, который пользуется некоторыми библиотеками C. Библиотеки C берут обратные вызовы языка C. Я записал обратный вызов в своем коде C++, и теперь я так или иначе должен сообщить об ошибке от него (но он возвращается пусто). Интересно, могу ли я выдать исключение от обратного вызова C, который используется из кода C++?

Это очень трудно для меня понять.

Спасибо, Boda Cydo.

9
задан bodacydo 5 July 2010 в 02:52
поделиться

2 ответа

Да, у вас должна быть возможность сделать так. Однако имейте в виду, что вполне вероятно, что библиотека C не была написана для обеспечения безопасности исключений, и в результате вы можете оставить некоторые из структур этой библиотеки в каком-то несовместимом состоянии. Это полностью зависит от конкретной библиотеки и конкретной функции обратного вызова. По крайней мере, эта библиотека, вероятно, должна быть написана с учетом поддержки C ++ с самого начала в отношении этого обратного вызова.

9
ответ дан 4 December 2019 в 21:07
поделиться

Да, вы можете вызвать исключение из вашей функции C ++. Однако его может перехватить только код C ++, поэтому он не будет обрабатываться в устаревшей библиотеке.

1
ответ дан 4 December 2019 в 21:07
поделиться