c # — использование constraint_handlers в переполнении стека

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

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

1

Решение

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

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

0

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

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