PD>__declspec(nothrow) говорит о том, что ты обещаешь не выбрасывать исключения с помощью throw. Но это синхронные исключения, а гарантировать, что не будет SEH-исключений, ты не можешь. Деление на 0 — и пожалуйста. И что потом делать ?
Очевидно, падать, т.к. опции компиляции Ehsc. А разве кто-то ожидал другого?
С т.з. VC __declspec(nothrow) говорит не о том, что функция не будет выбрасывать исключений для внешнего кода (что можно проверить, указав это для функции и убедиться, что код обработки исключений из внешнего кода не исчезает), а о том, что внутри функции не выбрасываются исключения, если иное не следует явно. И внутри функции, промаркированной как throw() как раз код обработки исключений в этом случае отсутствует. gcc же, напротив, по спецификатору noexcept считает во внешнем коде, что вызываемая функция не кидает исключений и убирает обработчик из внешнего кода.