Re[3]: dll собранные разными компилятора в одном проекте
От: Кодт Россия  
Дата: 06.03.09 10:08
Оценка:
Здравствуйте, byleas, Вы писали:

K>> Не кидать исключения за пределы своего модуля

B>Почему?

Потому что "на той стороне" его должны обработать (как минимум, размотать стек).

Во-первых, исключение могут поймать. И это даёт почву для нарушения ODR — например, ты кидаешь std::logic_error, объявленный в твоей версии STL — а там ловят std::logic_error, объявленный в другой версии STL. Разные лэяуты, и привет.

Во-вторых, если тот код не собирается обрабатывать исключения (трактует твою функцию как не бросающую; а для extern"C"-функций есть такая опция компилятора), — это ситуация UB или terminate, сейчас затруднюсь сказать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.