Использование constraint_handlers в C++

У меня есть код в C#, который использует функцию _set_invalid_parameter_handler. Это специфично для Windows, и я пытаюсь переписать этот код на стандартном C++, чтобы он работал на Linux.

Я не уверен, как перевести этот функционал. Мне посоветовали использовать, возможно, http://en.cppreference.com/w/c/error/set_constraint_handler_s но я следовал этому примеру, и типы обработчиков ограничений не распознаются в Visual Studio 2015, ни когда я пытаюсь скомпилировать его в линуксе Буду признателен за помощь в использовании обработчиков ограничений или в поиске другого способа репликации функциональности _set_invalid_parameter_handler в стандартном C++.

1 ответ

Это не так просто set_constraint_handler - это функциональность C11, а set_invalid_parameter - специфичен для Microsoft (также в C++).

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

Другие вопросы по тегам