Надо было тестово собрать один проект под VS для проверки совместимости кода, в общем все собирается, но выдает следующее:
warning C4530: Использован обработчик исключений C++, но семантика уничтожения объектов не включена. Задайте параметр /EHsc
проект собираться через Makefile
что это за беда такая? и собственно чего он по сути хочет? кроме как добавить ключ.
Как и говорит предупреждение, компилируется C++ код с обработчиками исключений, но ключ /EH не указан. Если верить документации, то в данном случае объекты с автоматическим временем хранения, созданные в функциях вызываемых внутри блока try могут не уничтожиться корректно, о чём компилятор и сообщает.
Как описано в справке, ключ /EHsc устанавливает режим обработки исключений:
s указывает, что следует обрабатывать только исключения C++, но не SE (см. далее).c указывает, что функции объявленные как extern C не могут выкинуть исключения C++, в связи с этим компилятор вправе применить некоторую оптимизацию накладных расходов.a (вместо sc), при котором обычный блок catch(...) помимо обычных исключений C++ будет ловить и структурированные исключения (structured exception), которые обычно отлавливаются внутри непереносимых блоков __try/__except.Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости