-fno-исключения для некоторых библиотек?

Это чем-то похоже наОтключение исключений C ++, как я могу сделать так, чтобы любой std :: throw () был немедленно завершен?.«Я бы хотел, чтобы моя программа заканчивалась всякий раз, когда из STL выбрасывалось исключение.

Проблема заключается в следующем: я пишу библиотеку, которая затем загружается как общий объект и выполняется программой, над которой у меня нет контроля. К сожалению, эта программа выполняет все с большой попытки, так что я не получаю трассировки стека / дамп ядра, если выдается ошибка, рендеринг ::at бесполезна ошибка класса функции вне диапазона.

Это звучит как идеальный вариант использования для -fno-exceptions, но я не могу просто использовать -fno-exceptions, потому что boost_log и вызывающая меня программа имеют обработку исключений, определенную в их заголовках, что дает мне ошибки компиляции с -fno-exceptions ,

Есть ли способ включить -fno-excptions только для исключений stl?

3

Решение

С C ++ 11 самый простой способ сделать это добавить noexcept к сигнатуре функции верхнего уровня, которая вызывается из вашей общей библиотеки:

void called_func() noexcept;

Это вызовет любые необработанные исключения в called_func кадр стека (или ниже, если они не обрабатываются) для прекращения выполнения программы.

1

Другие решения

Других решений пока нет …